1
我試圖獲取與特定文件關聯的縮略圖,然後調整其大小。我一直在Mac上進行測試,並且一直沒有找到能夠實現這一目標的解決方案。Java - 獲取文件縮略圖和調整大小
到目前爲止的代碼:
得到縮略圖的import com.apple.laf.AquaIcon;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
public class TestSystemIcon extends JFrame
{
JPanel panel;
ImageIcon icon;
public TestSystemIcon()
{
panel = new JPanel();
JButton button = new JButton("Open...");
final JLabel label = new JLabel();
icon = null;
final JPanel en = new JPanel(new FlowLayout(FlowLayout.CENTER));
label.setHorizontalAlignment(SwingConstants.CENTER);
button.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
JFileChooser fileChooser = new JFileChooser();
if(fileChooser.showOpenDialog(null) == JFileChooser.OPEN_DIALOG)
{
File file = fileChooser.getSelectedFile();
icon = resizeIcon(getThumbnail1(file),200,200);
// icon = resizeIcon(getThumbnail2(file),200,200);
System.out.println(icon);
label.setIcon(icon);
en.add(label);
revalidate();
repaint();
}
}
});
panel.add(button);
this.add(panel,BorderLayout.NORTH);
this.add(en,BorderLayout.CENTER);
this.setSize(400,400);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public ImageIcon getThumbnail1(File file)
{
JFileChooser f = new JFileChooser();
Icon i = f.getIcon(file);
//Mac Conversion.
Image image = AquaIcon.getImageForIcon(i);
return new ImageIcon(image);
}
public ImageIcon getThumbnail2(File file)
{
return new ImageIcon(file.getPath());
}
public ImageIcon resizeIcon(ImageIcon imageIcon,int width, int height)
{
return new ImageIcon(imageIcon.getImage().getScaledInstance(width,height,Image.SCALE_SMOOTH));
}
public static void main(String[] args)
{
TestSystemIcon test = new TestSystemIcon();
test.setVisible(true);
}
}
版本1有以下行爲:
- 可以打開縮略圖
- 很小,比例不太合適。越來越縮略圖
版本2有以下行爲:
- 不顯示圖像,儘管發現圖像(System.out的證明了這一點)。 除pdf外,其中顯示的是實際文件,而不是 縮略圖
- 當它工作時,即PDF,它可以很好地縮放。
我知道我可以使用sun.awt.shell.ShellFolder;
,但我的目標是跨平臺解決方案。
感謝所有幫助
感謝您的回覆,但其目的是獲取任何文件的縮略圖,而不是圖像。即如果我打開一個docx文件,我會得到微軟Word的縮略圖圖標 – 2015-02-18 08:21:18
@ EII_18,我發現了一個重複的帖子,解決圖標問題,但沒有重新調整圖像問題,看看http://stackoverflow.com/questions/1498506/java-howto-get-thumbnail-from-a-file我試過了它的工作邏輯,但是如果你需要重新設置圖標,請使用我的答案 – faljbour 2015-02-18 21:09:53
中的邏輯我更新了答案以顯示信息從1498506提供。 – faljbour 2015-02-18 21:19:13