在Windows资源管理器(和linux gnome)中为每个文件显示缩略图或图标。像EXE,图像,视频,txt文件,ini文件,Word文档和其他许多文件类型一样。现在是我的问题:有没有办法通过文件获得(最好是大)图标。Java:如何从文件中获取缩略图
喜欢的东西:
public static BufferedImage getThumbnail(File file) {...}
感谢
在Windows资源管理器(和linux gnome)中为每个文件显示缩略图或图标。像EXE,图像,视频,txt文件,ini文件,Word文档和其他许多文件类型一样。现在是我的问题:有没有办法通过文件获得(最好是大)图标。Java:如何从文件中获取缩略图
喜欢的东西:
public static BufferedImage getThumbnail(File file) {...}
感谢
它看起来像有这样做的没有AWT方式。
如果你使用的秋千,还有你可以用它来获得一个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。
不能完全确定,如果你能得到的图标,但看看AssociationService
可访问使用JDIC。
http://java.sun.com/developer/technicalArticles/J2SE/Desktop/jdic_assoc/
太阳线不再存在。 – koppor 2012-09-11 19:47:24
可以在[archive.org]上查看java.sun.com链接(https://web.archive.org/web/20061030164547/http://java.sun.com/developer/technicalArticles/J2SE/Desktop/ jdic_assoc /),[在oracle.com上]有一个半可读的版本(http://www.oracle.com/technetwork/articles/java/jdic-assoc-136531.html)。不幸的是论坛链接没有被存档。 – VGR 2016-10-07 14:01:28
我不认为上面的答案是解决正确的问题。 Martijn并没有要求API来操作图标图像。他想知道如何访问可浏览文件系统中项目的缩略图图像的桌面缓存。
我不认为有一个可移植的方式来做到这一点在所有,但在Linux世界(Gnome和KDE)坚持其可以在读取Freedesktop的缩略图标:http://jens.triq.net/thumbnail-spec/
有可能是代码,也许在Gtk(但可能不是Java)中实现了Windows的兼容层,但如果存在的话,我不知道它。
如果您正在寻找不依赖plattform(即纯Java)解决方案,请致电JavaThumbnailer。尽管如此,它仍然是测试版,并且支持的文件类型数量有限。
这就是我想要的。谢谢,也许你也知道更大的图标的方式? – 2009-09-30 15:52:48
是的,有没有办法让图标变大? 我想使用sun.awt.shell.ShellFolder.getIcon(true),但sun.awt.shell.ShellFolder具有访问限制。 :-( – 2009-10-08 12:19:50