在 Windows 资源管理器(和 linux gnome)中,每个文件都显示一个缩略图或图标。与 EXE、图像、视频、txt 文件、ini 文件、Word 文档和许多其他文件类型一样。现在是我的问题:有没有办法按文件获取(最好是大的)图标。
就像是:
public static BufferedImage getThumbnail(File file) {...}
谢谢
在 Windows 资源管理器(和 linux gnome)中,每个文件都显示一个缩略图或图标。与 EXE、图像、视频、txt 文件、ini 文件、Word 文档和许多其他文件类型一样。现在是我的问题:有没有办法按文件获取(最好是大的)图标。
就像是:
public static BufferedImage getThumbnail(File file) {...}
谢谢
看起来没有 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,事情就有点棘手了。
我认为上面的答案没有解决正确的问题。Martijn 并不要求使用 API 来处理图标图像。他想知道如何访问桌面的缩略图缓存以获取可浏览文件系统中的项目。
我认为根本没有可移植的方式来做到这一点,但 Linux 世界(Gnome 和 KDE)遵守 Freedesktop 缩略图标准,可以在以下位置阅读:http: //jens.triq.net/thumbnail-spec/
可能有代码,可能在 Gtk(但可能不是 Java)中实现了 Windows 的兼容层,但我不知道是否有。
如果您正在寻找独立于平台(即纯 java)的解决方案,请查看JavaThumbnailer。不过,它仍处于测试阶段,支持的文件类型数量有限。
不完全确定您是否能够获得该图标,但请看一下AssociationService
使用 JDIC 是否可以访问该图标。
http://java.sun.com/developer/technicalArticles/J2SE/Desktop/jdic_assoc/