Java:如何从文件中获取缩略图

时间:2009-09-30 14:33:07

标签: java file swing thumbnails

在Windows资源管理器(和linux gnome)中为每个文件显示缩略图或图标。与EXE,图像,视频,txt文件,ini文件,Word文档和其他许多文件类型一样。现在是我的问题:有没有办法按文件获得(最好是大)图标。

类似的东西:

public static BufferedImage getThumbnail(File file) {...}

由于

4 个答案:

答案 0 :(得分:14)

看起来没有AWT方法可以做到这一点。

如果您正在使用Swing,可以使用一种方法来获得Swing Icon ...

import javax.swing.filechooser.FileSystemView;
import javax.swing.Icon;

...

Icon ico = FileSystemView.getFileSystemView().getSystemIcon(file);

你也可以将Icon转换回Image(很可能是BufferedImage,但我还没有测试过):

Image image = ((ImageIcon) ico).getImage();

还有一个类直接获取图标,但此类依赖于JDK。在Sun JDK上,它是sun.awt.shell.ShellFolder类。

如果您正在使用SWT,那么are a bit trickier

答案 1 :(得分:6)

我不认为上面的答案正在解决正确的问题。 Martijn并没有要求API来操纵图标图像。他想知道如何访问桌面的可浏览文件系统中项目的缩略图图像缓存。

我认为根本没有可行的方法,但Linux世界(Gnome和KDE)遵循Freedesktop缩略图标准,可在以下网址阅读:http://jens.triq.net/thumbnail-spec/

可能有代码,可能是Gtk(但可能不是Java),它实现了Windows的兼容性层,但是如果有的话我就不知道了。

答案 2 :(得分:3)

如果您正在寻找独立于平台(即纯Java)的解决方案,请查看JavaThumbnailer。但它仍然是测试版,并且支持的文件类型数量有限。

答案 3 :(得分:0)

不完全确定您是否能够获取图标,但要查看可使用JDIC访问的AssociationService

http://java.sun.com/developer/technicalArticles/J2SE/Desktop/jdic_assoc/

此线程http://forums.sun.com/thread.jspa?threadID=5357995