Java Biểu tượng hệ thốngChiết xuất
JavaĐây là một chương trình mẫu trích xuất biểu tượng từ một tệp được chỉ định thành tệp hình ảnh PNG. Tệp được chỉ định có thể là bất kỳ loại tệp nào, bao gồm cả các tệp thực thi có phần mở rộng như .exe, cũng như .dll, .xls, .doc, v.v.
Tôi đã tìm kiếm trên internet các phương pháp tương tự, nhưng không tìm thấy phương pháp nào.
Tuy nhiên, tôi đã tìm ra một cách rất dễ để có được nó, vì vậy tôi sẽ chia sẻ với bạn.
Xin lưu ý rằng Chat&Messenger không sử dụng phương pháp này.Tính năng đính kèm tệp vào ghi chú dán.Tôi dùng nó.
Ví dụ về xác minh hoạt động của chương trình
Chạy ví dụ
*Thao tác này có thể được thực thi nếu có tệp JAR được liên kết với nó.
- Lấy mã nguồn mẫu, biên dịch và chạy nó.
- Khi bạn khởi chạy ứng dụng, cửa sổ chính sẽ hiện ra. Chỉ cần kéo và thả các biểu tượng bạn muốn trích xuất vào cửa sổ này.
- Tệp hình ảnh PNG sẽ được lưu vào 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 biểu tượng trong Java được thực hiện bằng phương pháp sau.
-
Đặt giao diện người dùng thành Windows.
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); - Các tệp được lấy bằng thao tác kéo và thả javax.swing.JFileChooser.getIcon() Phương pháp javax.swing.Icon Chuyển đổi nó thành một đối tượng.
- javax.imageio.ImageIO.write() Phương pháp này xuất đối tượng Icon ra tệp hình ảnh PNG.
Chương trình mẫu
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
public class IconExtractor extends JFrame
implements DropTargetListener {
private JPanel jContentPane = null;
private JLabel jLabel = null;
private JFileChooser chooser;
public static void main(String[] args) {
IconExtractor extractor = new IconExtractor();
extractor.setVisible(true);
}
public IconExtractor() {
siêu();
thử {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
chooser = new JFileChooser();
} catch (Exception e) {
e.printStackTrace();
}
khởi tạo();
}
private void initialize() {
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);
}
private JPanel getJContentPane() {
nếu (jContentPane == null) {
jLabel = new JLabel();
jLabel.setText("Vui lòng kéo biểu tượng.");
jLabel.setBackground(Color.white);
jLabel.setHorizontalAlignment(SwingConstants.CENTER);
jLabel.setOpaque(true);
new DropTarget(jLabel,
DnDConstants.ACTION_COPY_OR_MOVE, this);
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(jLabel, BorderLayout.CENTER);
}
Trả về jContentPane;
}
// — triển khai DropTargetListener —————————-
public void drop(DropTargetDropEvent dtde) {
dtde.acceptDrop(DnDConstants.ACTION_MOVE);
thử {
Transferable tran = dtde.getTransferable();
List fileList = (List) tran
.getTransferData(DataFlavor.javaFileListFlavor);
Iterator iterator = fileList.iterator();
trong khi (iterator.hasNext()) {
File file = (File) iterator.next();
ImageIcon icon = (ImageIcon) chooser.getIcon(file);
Chuỗi ext = file.getAbsoluteFile() + “.png”;
// Lưu tệp hình ảnh
ImageIO.write((BufferedImage) icon.getImage(), “png”,
tệp mới (ext));
jLabel.setText(“<html>Quá trình nhổ răng đã hoàn tất.<br>” + ext);
setIconImage(icon.getImage());
}
dtde.dropComplete(true);
} catch (Exception 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) {
}
}
