Pregunta

Soy interesantes de analizar el resultado exiftool con un API de Java o algo por el estilo.

He estado investigando, pero no he encontrado ningún ejemplo. Por ejemplo, ¿cómo podría obtener estos resultados en mi proyecto java?

  

ExifTool Número de versión: 8.22

     

Nombre del archivo:   ExifTool.jpg

     

Directorio: t / imágenes del archivo

     

Tamaño: 24 kB Modificación del archivo Fecha / Hora

Etc .. Busco a un 'cómo' o algo por el estilo.

¿Fue útil?

Solución

ExifTool (para Java) está diseñado ser un sencillo de usar y robusto abstracción de Java ExifTool de Phil Harvey. Acabo de hacer la primera liberación pública la semana pasada después de incubar el proyecto en el marco del proyecto imgscalr por un tiempo.

El proyecto está bajo la licencia comercial de usar Apache 2.

Mi objetivo para la biblioteca no es sólo para abstraer el código de ejecución del proceso externo de la persona que llama (como la mayoría de las otras capas de abstracción están pareciendo que hacer), pero en realidad a diseñar un envoltorio tan fuertemente la integración y elástico (lo haré aclarar lo que quiero decir aquí más adelante), que el tratamiento de los casos de la clase ExifTool exactamente como lo haría si ExifTool sí fue escrito en Java.

En esta versión inicial que admite la lectura de datos de la etiqueta (se sumará a escribir en una versión futura) y es tan simple como esto:

File image = // path to some image
ExifTool tool = new ExifTool();

Map<Tag, String> valueMap =
    tool.getImageMeta(image, Tag.GPS_LATITUDE, Tag.GPS_LONGITUDE);

System.out.println("Lat: " + valueMap.get(Tag.GPS_LATITUDE) +
    "\tLong: " + valueMap.get(Tag.GPS_LONGITUDE));

El uso de ExifTool en el nuevo "modo demonio" (-stay_open línea de cmd Verdadero) también es compatible y encender soporte para él es tan fácil como la creación de la instancia ExifTool este modo:

ExifTool tool = new ExifTool(Feature.STAY_OPEN);

La documentación sobre cómo utilizar el ExifTool clase es extensa, que abarca desde el diseño hasta la actuación para la seguridad hilo.

Además de hacer uso de ExifTool sencilla de Java, la clase emplea una cantidad considerable de precauciones para reducir al mínimo los problemas de tiempo de ejecución, así como la captura e informar de cualquier y todos los errores que pueden surgir en formas bien documentados (en lugar de dejar que la sorpresa correctamente excepciones burbujas desde centrales clases de Java).

Yo era tan pedante con el manejo de esta excepción y la recuperación de errores debido a que la clase está diseñada para permitir que usted pueda utilizar ExifTool en un entorno de alta disponibilidad como una aplicación web ocupado. Yo no sólo quiero envolver Proceso simple objetos continuación, tirar mis manos en el aire si algo explotó. Yo conocía a mí mismo (y cualquier otra persona usando la clase) necesitaría una API bien diseñado para permitir la recuperación de errores fácil.

Por ejemplo, intentar utilizar ExifTool en modo demonio hará que la clase para comprobar la realidad subyacente instalación de ExifTool de apoyo para esa función y lanzar un UnsupportedFeatureException con recomendaciones sobre cómo solucionar el problema si no es compatible.

Además de la comprobación de condición previa, para asegurar que el uso de la clase (a saber, en modo demonio) no se escapa procesos OS nativos, así como de entrada / OutputStreams utilizado para comunicarse con ellos, la clase proporciona una auto- hilo de limpieza que después de un especificado intervalo de inactividad (por defecto es de 10 minutos) se cerrará el proceso externo de forma limpia y las corrientes de lectura / escritura, por lo que la instancia de inactividad de ExifTool ligero y fácil de guardar para su reutilización.

Todos los recursos son re-inicializado en la siguiente llamada a la clase a analizar más metadatos lo que no hay necesidad de tirar y volver a crear nuevas instancias. También el subproceso de limpieza sólo se ejecuta después de períodos prolongados de inactividad, no en un horario establecido. Puede establecer el intervalo en cualquier cosa que desee o si se interrumpiera el hilo de limpieza completo y gestionar limpieza usted mismo (sólo llamar a close ()).

Estos diseños son parte de mi objetivo final de hacer la integración sin fisuras ExifTool en una aplicación Java, performante y fácil.

Se puede revisar la página del proyecto href="http://www.thebuzzmedia.com/software/exiftool-enhanced-java-integration-for-exiftool/" rel="noreferrer"> principal para obtener más información sobre el proyecto, el uso, la fuente, enlaces de descarga, etc., o usted puede saltar directamente a GitHub y la mirada a través del código, si lo prefiere.

Otros consejos

No sé exiftool, pero he utilizado anteriormente MediaUtil a leer y escribir Exif etiquetas en java (I usaron para rotación de la imagen jpeg automatizado)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top