2009-09-30 10 views
14

Dans Windows Explorer (et linux gnome) montre pour chaque fichier une vignette ou icône. Comme avec les fichiers EXE, les images, les vidéos, les fichiers txt, les fichiers ini, les documents Word et tant d'autres types de fichiers. Voici ma question: existe-t-il un moyen d'obtenir une icône (de préférence grande) par fichier.Java: comment obtenir la vignette d'un fichier

Quelque chose comme:

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

Merci

Répondre

12

On dirait qu'il n'y a aucun moyen AWT de le faire.

Si vous utilisez Swing, il existe une méthode que vous pouvez utiliser pour obtenir une balançoire Icon ...

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

...

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

Vous pouvez également convertir ce Icon retour dans un Image (très probablement un BufferedImage, mais je ne l'ai pas testé):

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

Il existe également une classe pour obtenir l'icône directement, mais cette classe dépend du JDK. Sur Sun JDK, c'est la classe sun.awt.shell.ShellFolder.

Si vous utilisez SWT, les choses are a bit trickier.

+1

C'est ce que je veux. Merci, peut-être que vous connaissez aussi un moyen pour les plus grandes icônes? –

+1

Oui, y a-t-il un moyen d'obtenir des icônes plus grandes? Je voudrais utiliser sun.awt.shell.ShellFolder.getIcon (true), mais sun.awt.shell.ShellFolder a une restriction d'accès. :-( –

0

Pas tout à fait sûr que vous serez en mesure d'obtenir l'icône, mais jetez un oeil à AssociationService qui est accessible à l'aide JDIC.

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

également ce fil http://forums.sun.com/thread.jspa?threadID=5357995

+0

Le fil solaire n'existe plus. – koppor

+0

Le lien java.sun.com peut être consulté [sur archive.org] (https://web.archive.org/web/20061030164547/http://java.sun.com/developer/technicalArticles/J2SE/Desktop/ jdic_assoc /), et il existe une version semi-lisible [sur oracle.com] (http://www.oracle.com/technetwork/articles/java/jdic-assoc-136531.html). Le lien du forum n'est malheureusement pas archivé. – VGR

6

Je ne pense pas que les réponses ci-dessus répondent à la bonne question. Martijn ne demande pas l'API pour manipuler les images des icônes. Il veut savoir comment accéder au cache d'images miniatures du bureau pour les éléments du système de fichiers navigable.

Je ne pense pas qu'il y ait un moyen portable pour faire du tout, mais le monde Linux (Gnome et KDE) conformes à la norme des vignettes Freedesktop qui peut être lu à: http://jens.triq.net/thumbnail-spec/

Il peut y avoir un code, peut-être dans Gtk (mais probablement pas Java) qui implémente une couche de compatibilité pour Windows, mais je ne suis pas au courant s'il y en a.

3

Si vous recherchez une solution indépendante de la plate-forme (c'est-à-dire pure java), consultez le JavaThumbnailer. C'est toujours bêta, cependant, et a un nombre limité de types de fichiers pris en charge.