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

Mar*_*aux 15 java swing file thumbnails

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

就像是:

public static BufferedImage getThumbnail(File file) {...}
Run Code Online (Sandbox Code Playgroud)

谢谢

Pow*_*ord 14

看起来没有AWT这样做的方法.

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

import javax.swing.filechooser.FileSystemView;
import javax.swing.Icon;
Run Code Online (Sandbox Code Playgroud)

...

Icon ico = FileSystemView.getFileSystemView().getSystemIcon(file);
Run Code Online (Sandbox Code Playgroud)

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

Image image = ((ImageIcon) ico).getImage();
Run Code Online (Sandbox Code Playgroud)

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

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


And*_*oss 6

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

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

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