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

2022-09-03 01:17:40

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

像这样:

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

谢谢


答案 1

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

如果您使用的是Swing,则可以使用一种方法来获得Swing图标...

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

...

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

你也可以把它转换回一个(很可能是一个BufferedImage,但我还没有测试过):IconImage

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

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

如果您使用的是SWT,事情会有点棘手


答案 2

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

我不认为有一种可移植的方法可以做到这一点,但是Linux世界(Gnome和KDE)遵循Freedesktop缩略图标准,可以在以下位置阅读:http://jens.triq.net/thumbnail-spec/

可能有代码,也许在Gtk(但可能不是Java)中实现了Windows的兼容层,但我不知道是否有。