Java biểu tượng hệ thốngtrích xuất
JavaỞ đây chúng tôi giới thiệu một chương trình mẫu trích xuất biểu tượng của một tệp được chỉ định thành tệp hình ảnh có định dạng png. Tệp được chỉ định có thể là bất kỳ tệp thực thi nào có phần mở rộng .exe, dll, xls, doc, v.v.
Tôi đã tìm kiếm các phương pháp tương tự trên internet nhưng không tìm thấy gì.
Tuy nhiên, tôi đã phát hiện ra một phương pháp thực sự dễ thực hiện nên tôi sẽ giới thiệu cho bạn.
Ngoài ra, trong Chat&Messenger, phương pháp này cònKhả năng đính kèm tập tin vào ghi chú dánNó được sử dụng trong
Xác nhận vận hành chương trình mẫu
chạy mẫu
*Nếu tệp jar được liên kết, nó có thể được thực thi.
- Lấy nguồn mẫu, biên dịch và chạy nó.
- Khi khởi động lên, cửa sổ chính sẽ mở ra nên bạn chỉ cần kéo thả biểu tượng muốn giải nén vào cửa sổ.
- Tệp hình ảnh định dạng png sẽ được xuất ra ở cùng vị trí với biểu tượng gốc.
Giải thích chương trình mẫu
Quá trình trích xuất các biểu tượng trong Java được thực hiện bằng phương pháp sau.
-
Đặt giao diện cho Windows.
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); - Tệp thu được bằng cách kéo và thả javax.swing.JFileChooser.getIcon() với phương pháp javax.swing.Icon Chuyển đổi thành đối tượng.
- javax.imageio.ImageIO.write() Xuất đối tượng Biểu tượng thành tệp hình ảnh định dạng png bằng phương thức.
chương trình mẫu
nhập javax.imageio.ImageIO;
nhập javax.swing.ImageIcon;
nhập javax.swing.JFileChooser;
nhập javax.swing.JFrame;
nhập javax.swing.JLabel;
nhập javax.swing.JPanel;
nhập javax.swing.SwingConstants;
nhập javax.swing.UIManager;
lớp công khai IconExtractor mở rộng JFrame
triển khai DropTargetListener {
JPanel riêng tư jContentPane = null;
JLabel riêng tư jLabel = null;
trình chọn JFileChooser riêng tư;
public static void main(String[] args) {
Trình trích xuất IconExtractor = new IconExtractor();
extractor.setVisible(true);
}
công khai IconExtractor() {
siêu();
thử {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
trình chọn = JFileChooser mới();
} bắt (Ngoại lệ e) {
e.printStackTrace();
}
khởi tạo();
}
khởi tạo khoảng trống riêng tư () {
this.setSize(300, 200);
this.setContentPane(getJContentPane());
this.setTitle(“Trích xuất biểu tượng”);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
JPanel riêng tư getJContentPane() {
nếu (jContentPane == null) {
jLabel = JLabel mới();
jLabel.setText(“Kéo biểu tượng.”);
jLabel.setBackground(Color.white);
jLabel.setHorizontalAlignment(SwingConstants.CENTER);
jLabel.setOpaque(true);
DropTarget mới (jLabel,
DnDConstants.ACTION_COPY_OR_MOVE, cái này);
jContentPane = JPanel mới();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(jLabel, BorderLayout.CENTER);
}
trả về jContentPane;
}
// — triển khai DropTargetListener —————————-
thả khoảng trống công khai (DropTargetDropEvent dtde) {
dtde.acceptDrop(DnDConstants.ACTION_MOVE);
thử {
Có thể chuyển nhượng tran = dtde.getTransferable();
List fileList = (List) tran
.getTransferData(DataFlavor.javaFileListFlavor);
Iterator iterator = fileList.iterator();
trong khi (iterator.hasNext()) {
File file = (File) iterator.next();
Biểu tượng ImageIcon = (ImageIcon) chooser.getIcon(file);
Chuỗi ext = file.getAbsoluteFile() + “.png”;
// Lưu tập tin hình ảnh
ImageIO.write((BufferedImage) icon.getImage(), “png”,
Tệp mới (ext));
jLabel.setText(“<html>Trích xuất hoàn tất<br>” + máy lẻ);
setIconImage(icon.getImage());
}
dtde.dropComplete(true);
} bắt (Ngoại lệ e) {
e.printStackTrace();
dtde.dropComplete(false);
}
}
public void dragEnter(DropTargetDragEvent e) {
}
public void dragOver(DropTargetDragEvent e) {
}
public void dropActionChanged(DropTargetDragEvent e) {
}
public void dragExit(DropTargetEvent e) {
}
}