2009-09-30 10 views
14

W Eksploratorze Windows (i gnome linuksowym) pokazuje dla każdego pliku miniaturę lub ikonę icon. Podobnie jak w przypadku plików EXE, obrazów, wideo, plików txt, plików ini, dokumentów Word i wielu innych typów plików. Teraz moje pytanie: czy istnieje sposób na uzyskanie ikony (najlepiej dużej) według pliku.Java: jak uzyskać miniaturkę z pliku

Coś jak:

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

Dzięki

Odpowiedz

12

Wygląda na to, nie ma sposobu, AWT w ten sposób.

Jeśli używasz Swing, istnieje sposób można użyć, aby uzyskać Swing Icon ...

import javax.swing.filechooser.FileSystemView; 
import javax.swing.Icon; 

...

Icon ico = FileSystemView.getFileSystemView().getSystemIcon(file); 

Można również przekonwertować Icon z powrotem do Image (najprawdopodobniej obrazu buforowanego, ale go nie testowałem):

Image image = ((ImageIcon) ico).getImage(); 

Istnieje również klasa, która bezpośrednio pobiera ikonę, ale ta klasa jest zależna od JDK. W Sun JDK jest to klasa sun.awt.shell.ShellFolder.

Jeśli używasz SWT, rzeczy are a bit trickier.

+1

Tego właśnie chcę. Dzięki, może znasz także sposób na większe ikony? –

+1

Tak, czy istnieje sposób na uzyskanie większych ikon? Chciałbym użyć sun.awt.shell.ShellFolder.getIcon (true), ale sun.awt.shell.ShellFolder ma ograniczenie dostępu. :-( –

0

Nie do końca pewien, czy będzie w stanie uzyskać ikonę jednak przyjrzeć AssociationService, dostępną JDIC.

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

Również ten wątek http://forums.sun.com/thread.jspa?threadID=5357995

+0

Nici słońca już nie istnieją. – koppor

+0

Link do java.sun.com można obejrzeć [na archive.org] (https://web.archive.org/web/20061030164547/http://java.sun.com/developer/technicalArticles/J2SE/Desktop/ jdic_assoc /) i istnieje wersja częściowo czytelna [at oracle.com] (http://www.oracle.com/technetwork/articles/java/jdic-assoc-136531.html). Link do forum nie jest niestety archiwizowany. – VGR

6

Nie sądzę, że powyższe odpowiedzi odnoszą się do właściwego pytania. Martijn nie prosi o API do manipulowania obrazami ikon. Chce wiedzieć, jak uzyskać dostęp do pamięci podręcznej miniatur obrazów pulpitu na pulpicie w systemie plików do przeglądania.

nie sądzę istnieje przenośny sposób to zrobić w ogóle, ale świat Linux (Gnome i KDE) stosować się do standardu miniatur freedesktop które można przeczytać na: http://jens.triq.net/thumbnail-spec/

Nie może być kod, być może w Gtk (ale prawdopodobnie nie Java), który implementuje warstwę kompatybilności dla Windows, ale nie jestem tego świadomy, jeśli jest.

3

Jeśli szukasz rozwiązania niezależnego od platformy (tj. Czystego Java), zobacz na JavaThumbnailer. Wciąż jest to wersja beta i ma ograniczoną liczbę obsługiwanych typów plików.

Powiązane problemy