2009-09-30 56 views
14

在Windows資源管理器(和linux gnome)中爲每個文件顯示縮略圖或圖標。像EXE,圖像,視頻,txt文件,ini文件,Word文檔和其他許多文件類型一樣。現在是我的問題:有沒有辦法通過文件獲得(最好是大)圖標。Java:如何從文件中獲取縮略圖

喜歡的東西:

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

感謝

回答

12

它看起來像有這樣做的沒有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

+1

這就是我想要的。謝謝,也許你也知道更大的圖標的方式? – 2009-09-30 15:52:48

+1

是的,有沒有辦法讓圖標變大? 我想使用sun.awt.shell.ShellFolder.getIcon(true),但sun.awt.shell.ShellFolder具有訪問限制。 :-( – 2009-10-08 12:19:50

0

不能完全確定,如果你能得到的圖標,但看看AssociationService可訪問使用JDIC。

http://java.sun.com/developer/technicalArticles/J2SE/Desktop/jdic_assoc/

而且這個線程http://forums.sun.com/thread.jspa?threadID=5357995

+0

太陽線不再存在。 – koppor 2012-09-11 19:47:24

+0

可以在[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

6

我不認爲上面的答案是解決正確的問題。 Martijn並沒有要求API來操作圖標圖像。他想知道如何訪問可瀏覽文件系統中項目的縮略圖圖像的桌面緩存。

我不認爲有一個可移植的方式來做到這一點在所有,但在Linux世界(Gnome和KDE)堅持其可以在讀取Freedesktop的縮略圖標:http://jens.triq.net/thumbnail-spec/

有可能是代碼,也許在Gtk(但可能不是Java)中實現了Windows的兼容層,但如果存在的話,我不知道它。

3

如果您正在尋找不依賴plattform(即純Java)解決方案,請致電JavaThumbnailer。儘管如此,它仍然是測試版,並且支持的文件類型數量有限。

相關問題