Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Biblioteca java para leer/escribir Metadatos

Biblioteca java para leer/escribir Metadatos

Autor jc mouse martes, noviembre 20, 2018

En posts anteriores hablamos sobre los metadatos y el porque son importantes en la Seguridad Informática, vimos el manejo de algunas herramientas free disponibles en la red y como sacarles provecho para nuestras investigaciones de pentesting. Una de esas herramientas fue Exiftool una pequeña pero poderosa herramienta escrita en Perl, multiplataforma y capaz de leer, editar o escribir metadatos de una gran variedad de archivos, pero tenia un pequeño inconveniente, funciona por linea de comandos.

Si bien Exiftool te brinda las fuentes para que tu puedas redistribuirlo y/o modificarlo bajo los términos de licencia de Perl, también podemos hacer uso de algunas librerías como «Java ExifTool» programado por Mickael Jeanroy quien se tomo el tiempo de implementar las funcionalidades de Exiftool en una pequeña y cómoda api para el lenguje Java. Según nos cuenta en su web, el objetivo de ese proyecto es el de  proporcionar una integración tan precisa, bien diseñada y con un rendimiento tan exacto que cualquier desarrollador de Java pueda aprovechar las ventajas y robustez de ExifTool.

A continuación implementaremos un ejemplo de uso de esta útil biblioteca.

¿Que necesitamos?

  • Obviamente ExifTool
  • Sistema Operativo Windows
  • Maquina Virtual Java
  • IDE Netbeans (puedes usar cualquier otro)
  • Maven instalado y correctamente configurado

Paso 1: El Proyecto

Crea un nuevo proyecto maven en tu IDE favorito con el nombre de JExifTool y añade una clase Main

proyecto maven netbeans

Paso 2: Dependencias

Agrega la siguiente dependencia:

<dependency>
  <groupId>com.github.mjeanroy</groupId>
  <artifactId>exiftool-lib</artifactId>
  <version>2.1.0</version>
</dependency>

Paso 3: Opcional

Si descargaste Exiftool e instalaste este en  el PATH de windows, puedes saltar este paso, caso contrario.

Cuando se ejecuta el proyecto junto a la librería, este buscara el *.exe de la aplicación, si este ya esta incluido en el PATH del sistema la aplicación se ejecutara sin problema, sino, debes agregar el *.exe en la carpeta base del proyecto como se ve en la imagen siguiente.

PATH en Windows

Igualmente si creas el *.jar junto a una GUI, debes incluir el *.exe de Exiftool en la misma carpeta que el jar ejecutable.

Paso 4: La clase Main

Pega el siguiente código en la clase Main.java

package example.org.jexiftool;

import com.thebuzzmedia.exiftool.ExifTool;
import com.thebuzzmedia.exiftool.ExifToolBuilder;
import com.thebuzzmedia.exiftool.Tag;
import com.thebuzzmedia.exiftool.core.StandardTag;

import java.io.File;
import java.util.Map;

import static java.util.Arrays.asList;
import java.util.HashMap;

/**
 * @see https://www.jc-mouse.net/
 * @author mouse
 */
public class Main {

    /**
     * @param image de tipo File, archivo con la direccion del archivo de imagen a leer/editar
     * @param meta Map con los metadatos a editar/agregar
     * @return Map metadatos leidos del archivo "image", si no lee ningun metadatos retorna
     * un Map vacio, si se produce un error retorna NULL
     * @exception Exception
     */
    public static Map<Tag, String> process(File image, Map<Tag, String> meta) throws Exception {

        try {
            ExifTool exifTool = new ExifToolBuilder().build();

            //Escritura de metadatos
            if(meta!=null){
                exifTool.setImageMeta(image, meta);
            }           

            //lee y retorna metadatos
            return exifTool.getImageMeta(image, asList(
                    StandardTag.TITLE,
                    StandardTag.COPYRIGHT,
                    StandardTag.ISO,
                    StandardTag.IMAGE_WIDTH,
                    StandardTag.IMAGE_HEIGHT,
                    StandardTag.EXIF_VERSION,
                    StandardTag.GPS_LATITUDE,
                    StandardTag.GPS_LONGITUDE,
                    StandardTag.X_RESOLUTION,
                    StandardTag.Y_RESOLUTION
            ));
        } catch (Exception ex) {
            return null;
        }
    }

    public static void main(String[] args) throws Exception {

        //metadatos a escribir
        Map<Tag, String> meta = new HashMap<>();
        meta.put(StandardTag.COPYRIGHT, "JC Mouse");
        meta.put(StandardTag.TITLE, "Mi Foto");

        //lee metadatos y asigna a un Map
        Map<Tag, String> metadatos = process(new File("E:/images/DSC_95510.jpg"), meta);

        //muestra metadatos por consola
        metadatos.entrySet().stream().forEach((entry) -> {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        });

    }

}

Donde en el método process, le pasamos un nuevo File con la dirección del archivo de imagen que queremos leer/editar metadatos.

Ejecutamos y obtenemos

lectura de metadatos en java

enjoy!!!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Guardar reporte PDF directamente con Jasperreports

Guardar reporte PDF directamente con Jasperreports

Guardar un reporte PDF creado en iReport no es tan diferente de solo visualizarlo en pantalla. En este ejemplo se hace u...

Ejemplo práctico de MVC java Swing con Netbeans

Ejemplo práctico de MVC java Swing con Netbeans

Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos de una aplicación, la inter...

Primeros pasos con Vue CLI: Crea tu Entorno de Trabajo

Primeros pasos con Vue CLI: Crea tu Entorno de Trabajo

En un post anterior [Introducción a VueJS framework para el desarrollo FrontEnd] realizamos una breve introducción a Vue...

Yachaywasi – Crea exámenes tipo test para android

Yachaywasi – Crea exámenes tipo test para android

Yachaywasi versión 3.1 es una aplicación para android que te permite crear, editar y realizar exámenes tipo test cómodam...

Búsqueda dinámica en JList

Búsqueda dinámica en JList

Un JList nos permite almacenar objetos en una lista y mostrarlos gráficamente en una serie vertical en el cual el usuari...

«Hola Mundo» en kotlin con Eclipse

«Hola Mundo» en kotlin con Eclipse

Kotlin es un lenguaje de programación de tipado estático que corre sobre la máquina virtual de Java y que también puede...

Comparte lo que sabes

Categorias

Últimas entradas

En este post crearemos un botón swing que reproducirá un sonido cuando este sea presionado por el usuario.  Sin mas que...

Muchas veces necesitamos de fotos para adornar nuestros perfiles en RRSS pero no queremos subir nuestras propias fotos p...

En esta ocasión aprenderemos a conectaros con una base de datos Oracle desde Laravel. Es un tutorial sencillo y cortito,...

En este tutorial conoceremos una forma de conectar una aplicación en Laravel con tres bases de datos diferentes, 2 en My...

Herramientas

Generador de Enlaces a Whatsapp