2009-09-30 11 views
14

En Windows Explorer (y linux gnome) muestra para cada archivo una miniatura o icono. Al igual que con EXEs, imágenes, videos, archivos txt, ini-files, documentos de Word y tantos otros tipos de archivos. Ahora es mi pregunta: ¿Hay alguna manera de obtener un icono (preferiblemente grande) por archivo?Java: Cómo obtener la miniatura de un archivo

Algo así como:

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

Gracias

Respuesta

12

Parece que no hay manera de hacer esto AWT.

Si está usando Swing, hay un método que puede utilizar para obtener una oscilación Icon ...

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

...

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

También puede convertir ese Icon vuelta en un Image (muy probablemente un BufferedImage, pero no lo he probado):

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

También hay una clase para obtener el icono directamente, pero esta clase depende del JDK. En Sun JDK's es la clase sun.awt.shell.ShellFolder.

Si está utilizando SWT, cosas are a bit trickier.

+1

Esto es lo que quiero. Gracias, ¿quizás también conoces una forma de iconos más grandes? –

+1

Sí, ¿hay alguna manera de obtener íconos más grandes? Me gustaría usar sun.awt.shell.ShellFolder.getIcon (true), pero sun.awt.shell.ShellFolder tiene restricción de acceso. :-( –

0

No sabe con certeza si va a ser capaz de obtener el icono, pero echa un vistazo a AssociationService, accesible mediante JDIC.

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

También este hilo http://forums.sun.com/thread.jspa?threadID=5357995

+0

El hilo solar ya no existe. – koppor

+0

El enlace de java.sun.com se puede ver [en archive.org] (https://web.archive.org/web/20061030164547/http://java.sun.com/developer/technicalArticles/J2SE/Desktop/ jdic_assoc /), y hay una versión semi-legible [en oracle.com] (http://www.oracle.com/technetwork/articles/java/jdic-assoc-136531.html). El enlace del foro no está archivado, desafortunadamente. – VGR

6

No creo que las respuestas anteriores se dirijan a la pregunta correcta. Martijn no solicita la API para manipular imágenes de iconos. Quiere saber cómo acceder al caché de imágenes en miniatura del escritorio para los elementos en el sistema de archivos navegable.

No creo que hay una manera portátil para hacer esto en absoluto, pero el mundo de Linux (Gnome y KDE) se adhieren a la norma miniatura Freedesktop que se puede leer en: http://jens.triq.net/thumbnail-spec/

Puede haber código, quizás en Gtk (pero probablemente no en Java) que implemente una capa de compatibilidad para Windows, pero no estoy al tanto de eso si lo hay.

3

Si está buscando una solución independiente de plataforma (es decir, java pura), consulte el JavaThumbnailer. Sin embargo, sigue siendo beta y tiene un número limitado de tipos de archivos admitidos.

Cuestiones relacionadas