ชวา ไอคอนระบบสารสกัด
ชวานี่คือโปรแกรมตัวอย่างที่ดึงไอคอนจากไฟล์ที่ระบุมาบันทึกเป็นไฟล์ภาพ PNG ไฟล์ที่ระบุสามารถเป็นไฟล์ประเภทใดก็ได้ รวมถึงไฟล์ปฏิบัติการที่มีนามสกุลเช่น .exe ตลอดจนไฟล์ .dll, .xls, .doc เป็นต้น
ฉันค้นหาในอินเทอร์เน็ตเกี่ยวกับวิธีการที่คล้ายกัน แต่ฉันหาไม่เจอเลย
อย่างไรก็ตาม ผมค้นพบวิธีที่ง่ายมากในการหามันมา ดังนั้นผมจะแบ่งปันให้คุณ
โปรดทราบว่า Chat&Messenger ไม่ได้ใช้วิธีนี้ฟีเจอร์สำหรับแนบไฟล์ไปยังโน้ตแปะฉันกำลังใช้งานอยู่
การตรวจสอบการทำงานของโปรแกรมตัวอย่าง
เรียกใช้ตัวอย่าง
*สามารถเรียกใช้คำสั่งนี้ได้หากมีไฟล์ jar ที่เชื่อมโยงอยู่ด้วย
- ดาวน์โหลดซอร์สโค้ดตัวอย่าง คอมไพล์ และรันมัน
- เมื่อคุณเปิดแอปพลิเคชัน หน้าต่างหลักจะเปิดขึ้นมา เพียงลากและวางไอคอนที่คุณต้องการแยกออกมาลงในหน้าต่างนี้
- ไฟล์ภาพ PNG จะถูกบันทึกไปยังตำแหน่งเดียวกับไอคอนต้นฉบับ
คำอธิบายโปรแกรมตัวอย่าง
กระบวนการแยกไอคอนในภาษา Java นั้นดำเนินการโดยใช้วิธีการดังต่อไปนี้
-
ตั้งค่ารูปแบบการแสดงผลเป็น Windows
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); - ไฟล์ที่ได้มาโดยการลากและวาง javax.swing.JFileChooser.getIcon() วิธี javax.swing.Icon แปลงให้เป็นอ็อบเจ็กต์
- javax.imageio.ImageIO.write() เมธอดนี้จะส่งออกออบเจ็กต์ไอคอนไปยังไฟล์ภาพ PNG
ตัวอย่างโปรแกรม
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;
คลาสสาธารณะ IconExtractor สืบทอดมาจาก JFrame
implements DropTargetListener {
private JPanel jContentPane = null;
private JLabel jLabel = null;
ตัวเลือก JFileChooser ส่วนตัว;
public static void main(String[] args) {
IconExtractor extractor = new IconExtractor();
extractor.setVisible(true);
}
สาธารณะ IconExtractor() {
ซูเปอร์();
พยายาม {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
chooser = new JFileChooser();
} catch (Exception e) {
e.printStackTrace();
}
เริ่มต้น();
}
private void initialize() {
this.setSize(300, 200);
this.setContentPane(getJContentPane());
this.setTitle("การดึงไอคอน");
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private JPanel getJContentPane() {
ถ้า jContentPane เป็นค่าว่าง {
jLabel = new JLabel();
jLabel.setText("กรุณาลากไอคอน");
jLabel.setBackground(Color.white);
jLabel.setHorizontalAlignment(SwingConstants.CENTER);
jLabel.setOpaque(true);
DropTarget ใหม่ (jLabel,
DnDConstants.ACTION_COPY_OR_MOVE, this);
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(jLabel, BorderLayout.CENTER);
}
ส่งคืน jContentPane;
}
// — ใช้กลไก DropTargetListener —————————-
public void drop(DropTargetDropEvent dtde) {
dtde.acceptDrop(DnDConstants.ACTION_MOVE);
พยายาม {
Transferable tran = dtde.getTransferable();
รายการไฟล์รายการ = (รายการ) ทราน
.getTransferData(DataFlavor.javaFileListFlavor);
Iterator iterator = fileList.iterator();
ในขณะที่ iterator มีสิ่งถัดไป {
ไฟล์ file = (ไฟล์) iterator.next();
ImageIcon icon = (ImageIcon) chooser.getIcon(file);
สตริง ext = file.getAbsoluteFile() + “.png”;
// บันทึกไฟล์ภาพ
ImageIO.write((BufferedImage) icon.getImage(), “png”,
ไฟล์ใหม่ (ext));
jLabel.setText(“<html>การสกัดเสร็จสมบูรณ์<br>”" + ต่อ);
ตั้งค่าไอคอนรูปภาพ (ไอคอน.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) {
}
}
