在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