2014-11-24 88 views
1

我想獲得不同文件的縮略圖。它可以是圖像或音樂或.docx文檔。我做了一個代碼,它給了我一個非常小的文件類型的圖像,而不是實際的文件內容。例如,所有圖像都有相同的圖標。但在Windows中,它將圖像顯示爲縮略圖或PDF文件第一頁的圖片。如何獲取不同文件的縮略圖圖像?

這是我的工作代碼,顯示每種格式的一般圖標的32 x 32圖像。

File file = new File("D:/Desktop/image.jpg"); 
Icon ico = FileSystemView.getFileSystemView().getSystemIcon(file); 
JLabel image = new JLabel(); 
image.setIcon(ico); 
panel.add(image); 

enter image description here

任何想法如何獲得每個文件,而不是一般的人更大的指定圖標?

謝謝

+0

這不是「Windows」功能,它是Windows Exporer功能。打開任何應用程序(如Eclipse或Word),然後打開文件瀏覽器。你會發現所有的圖標都是你從FileSystemView獲得的 – ControlAltDel 2014-11-24 20:37:40

+0

Off-top:由於你已經用'java'標記了你的問題,所以你不需要在標題中重複這個問題。 – Pshemo 2014-11-24 20:38:07

+0

@ControlAltDel感謝您的評論。有什麼辦法可以在軟件中做到這一點?我不知道它會處理什麼樣的文件,但它應該跟Windows Exproper一樣? – Dan 2014-11-24 22:46:21

回答

0

對於需要進行以下操作的圖像。

ImageIcon icn = new ImageIcon(new File("D:/Desktop/image.jpg")); 
Image resized = icon.getImage().getScaledInstance(width, height, Image.SCALE_SMOOTH); 
label.setIcon(new ImageIcon(resized)); 

一些庫(IcePDF例如)也可以轉換成PDF文件的網頁,以圖像,因此您可以使用相同的方法。

+0

謝謝,我正在使用的軟件是一個通用的文件瀏覽器,所以我不知道該軟件將處理什麼格式。我正在尋找一個通用的方法。就像Windows資源管理器那樣 – Dan 2014-11-24 22:40:28

+1

@Dan我認爲資源管理器使用本地Windows API,在沒有本機C/C++代碼的情況下,java不能訪問。 – 2014-11-25 07:57:48

0

您可以按照Windows資源管理器所做的唯一方法是使用文件類型/內容解析器。 除非Windows沒有PDF/word /圖像瀏覽器/處理器,否則它不能生成包含(例如)PDF文件第一頁的縮略圖圖像。它只是常用的處理器與Windows捆綁在一起。

回到你有縮略圖的問題,你可以做的是提取正在探索的文件的擴展名,並保存(該類型的)圖像,它將顯示爲縮略圖(但不是實際內容)。雖然,圖像可以像上面的答案中所建議的那樣輕鬆地「縮略圖」。所以,你可以使用它。對於未知的文件類型,您可以使用一些通用圖標。

我不認爲,一個瀏覽器「讀取」PDF/Word /圖像等所有在一個將只是一個資源管理器的應用程序。

相關問題