Extrayendo etiquetas XMP de las fotos digitales

31 08 2008

Aunque el título sea un poco “extraño”, con este post pretendo explicar un poco como se pueden extraer las etiquetas de metadatos XMP que algunos programas como por ejemplo f-spot introducen para clasificar las fotos.

Esto viene a cuento porque después de clasificar todas las fotos del viaje a NY, algo así como 1200, me he puesto a exportarlas a una carpeta creando una galería web, para hacer más comodo el verlas dentro de un tiempo, y aquí empiezan los problemas, para empezar, el exporter, peta, y para continuar, no te clasifica las fotos por etiquetas, lo cual es una putada bastante decente, así que me he dicho, ¿porque no te haces un programita para hacer esta función? Así que en ello estoy.

Para empezar he empezado con lo más complicado, es decir, como leer los metadatos que el f-spot escribe en las fotos, al final he dado con que los datos XMP, son simplemente un fichero XML embebido en el archivo JPG, el problema viene entonces en como encontrar que fragmento del fichero JPG es que el contiene el XML, pero para esta tarea tenemos al tito google, que trás un par de búsquedas con diferentes términos, un enlace a una página en la que se muestra un fragmento de código que hace precisamente lo que queremos y además, en JAVA xD

El código es el siguiente:
public class XMLExtractor {
public String getXMP(File f) throws IOException {
FileInputStream is = new FileInputStream(f);
int i = 0;
String result = null;
while ((i = is.read()) != -1)
if (i == 0xFF && is.read() == 0xE1) {
result = checkNamespace(is);
if (result != null)
break;
}
return result;
}
public static final String namespace = "http://ns.adobe.com/xap/1.0/";
private String checkNamespace(FileInputStream is) throws IOException {
String s = getSegment(is);
return (s.startsWith(namespace)) ? s.substring(29) : null;
}
private String getSegment(InputStream is) throws IOException {
DataInputStream dis = new DataInputStream(is);
byte[] buffer = new byte[dis.readShort() - 2];
dis.read(buffer);
return new String(buffer);
}
}

Lo único que he hecho aquí ha sido mover el método main a otra clase.

Ya tenemos el contenido del XML, ahora solo tenemos que parsearlo para convertirlo en un objeto del tipo “Document” y obtener los datos que nos interesan por medio de operaciones sobre el árbol DOM del XML, para ello, añadimos un nuevo método llamado getTag a la clase anterior. Este método contiene el siguiente código, aunque de momento es solo una aproximación a hacer lo que nos interesa, por lo que puede que cambie bastante en los próximos días :)


public String getTag(String xml) {
// Converts the XML string to document
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
Document document = null;
try {
DocumentBuilder builder = factory.newDocumentBuilder(); //el documento
document = builder.parse(new InputSource(new StringReader(xml))); //aqui le paso al Document
} catch(Exception e) {
e.printStackTrace();
}
document.toString();
document.setXmlVersion("1.0");
NodeList list = document.getElementsByTagName("rdf:li");
//NodeList list = document.getChildNodes();
Node node = (Node)list.item(0);
System.out.println(list.getLength()+" - "+node.getFirstChild().getNodeValue());
//XMPMetadata metadata = new XMPMetadata(document);
return node.getFirstChild().getNodeValue();
}

Bueno, de momento, esto es lo que hay, está probado y funciona, aunque como ya digo, este código es de prueba, por lo que solo nos devuelve el valor de la primera etiqueta que encuentra, en caso de que haya varias.

Cuando esté más avanzado el proyecto subiré el código para que se pueda descargar.



España campeona de Europa de fútbol

30 06 2008

Al final, ha ocurrido, y la selección Española de fútbol se ha proclamado campeona de Europa, ganando a Alemania por 0 goles a 1, gol que ha marcado Torres en el minuto 32 de la primera parte, aprovechando un fantástico pase de Xavi y un pequeño despiste de la defensa, que le ha servido para poder llevarse el balón y batir con un toque perfecto a Lehman.

El partido ha sido muy bueno, y en el se ha demostrado que ha ganado la eurocopa la selección que más se lo merecía, ya que ha sido la que más juego ha propuesto, no solo durante el partido, sino durante todo el torneo. Esto le ha valido para ser la selección que mejor a acabado una Eurocopa de toda la historia, ya que solo ha empatado un partido, contra Italia, en cuartos.

Por otra parte, Villa, a pesar de no haber podido jugar la final por lesión, se ha proclamado pichichi del torneo, con 4 dianas, ya que el único que podía alcanzarle, que era el Alemán Podolski, no consiguó batir la meta de Casillas, por lo que se ha quedado a un gol de Villa.

Y por último, un video que he encontrado de la celebración en la Plaza Circular, de Murcia:



8,984,049 descargas de Firefox en 24 horas

18 06 2008

Parece ser que el “download day” promovido por Mozilla ha sido todo un éxito, ya que en las primeras 24 horas oficiales de vida de la nueva versión del navegador web Mozilla Firefox se han conseguido 8.984.049 descargas en todo el mundo hasta las 23:25 h. (GMT+1), según datos ofrecidos por la propia Mozilla en la web:

http://www.spreadfirefox.com/es-ES/worldrecord

En esta web, se pueden ver también los resultados por paises, en el que España ha quedado en 4 puesto con 324.890 descargas, tan solo superada por Estados Unidos (2.762.885), Alemania (786.834) y Reino Unido (333.909).

Ahora solo falta esperar que la gente revise y avale el record de descargas en caso de que se haya conseguido, lo que, según la propia página de descarga, puede llevar unos días, así que habrá que esperar.



Vamos a batir un record del mundo…

1 06 2008

… De descargas de Firefox.

La idea es batir el record del mundo de descargas de un programa en un solo día, en este caso, supongo que será el día del lanzamiento de la versión 3 de Firefox.

El funcionamiento es bien sencillo, simplemente hay que entrar a:

http://www.spreadfirefox.com/es-ES/worldrecord/

y pinchar donde pone “Únete ahora“, donde nos pedirá que introduzcamos nuestro país y nuestro email, con esto, nos envian un correo diciendo que nos avisarán el día de la descarga, con lo que solo tendremos que esperar a que llegue ese día.

Ale, a registrarse todo el mundo :)



Nueva versión de Wordpress

31 03 2008

HAce un par de días, salía la nueva versión de Wordpress, gestor de contenido que hace que esto funcione, por eso me parece interesante dedicarle un post para ver que nos trae de nuevo esta versión. En principio, los usuarios van a ver poco (o nada) nuevo, puesto que los cambios se han producido principalmente en el área de administración, la cual ha cambiado completamente, ahora la interfaz está más dividida y mejor catalogada en secciones (para mi gusto).

Veamos ahora algunas de las mejoras con más detalle:

  • Se ha mejorado el “dashboard”, haciendolo más rapido y claro, ahora se pueden ver diferentes widgets totalmente configurables para mostrar la información que más nos interese.
  • Mejora de las subidas de archivos multimedia, incluyendo la posibilidad de subir varios archivos de golpe, cosa que antes no era posible.
  • Extracción de los datos EXIF de las fotos. Ahora, si subimos fotos con metadatos, estos se nos mostrarán, muy útil para las cuando se quiere enseñar alguna foto en particular, puesto que no hay que postear aparte los datos EXIF, ya te lo hace solo :)
  • Se incluyen las páginas en las búsquedas, antes solo se buscaba en el contenido de los posts.
  • Gestión de tags incluida en wordpress, incluyendo la posibilidad de modificarlas y añadir nuevas sin necesidad de plugins externos.
  • Protección contra la edición concurrente de posts. en este blog en particular no resultará muy útil, pero en blogs colaborativos sí, ya que no se permite que dos usuarios estén editando el mismo post a la vez, evitando así que el resultado final sea algo raro.
  • Edición de post más amigable. Se ha mejorado la interfaz de usuario del sistema de edición de post, para hacerla más sencilla.
  • Salted Password. Esto no se exáctamente como traducirlo, pero incrementa la seguridad en el almacenamiento de las claves en la base de datos.
  • Encriptación de las cookies que se envian al usuario.
  • Optimización de la base de datos. Se han cambiado algunos campos de las tablas para solucionar algunos cuellos de botella que se han encontrado en Wordpress.com.

Estas me han parecido las mejoras más importantes, aunque hay algunas más, la lista completa se puede encontrar aquí (en inglés) además de algunas capturas e incluso algún vídeo.

Además de todo esto, solo queda decir que el proceso de actualización es muy sencillo, solo hay que seguir los siguiente pasos:

  1. Hacemos copia de seguridad de los archivos y de la BBDD (muy importante :D )
  2. Descargamos el fichero que contiene la nueva versión de wordpress de aquí
  3. Descomprimimos el fichero y copiamos los contenidos de la carpeta “wordpress” que venía en el fichero comprimido a la carpeta donde tengamos nuestro blog, sobreescribiendo todo.
  4. Entramos al blog y nos aparece un mensaje diciendo que hay que actualizar la BBDD, este mensaje viene con un enlace al script que hace esta tarea, así que solo tenemos que pichar en el y ya tenemos nuestro blog actualizado.


Poniendo fotos en el blog con picasa

4 03 2008

Esta es una de las chorradas de las que no te das cuenta hasta que realmente no te pones a hacerla y no encuentras nada de información sobre ella, y es que los señores de Google, no han traducido hasta este momento todas las opciones de Picasa web, y en vez de ponerlas en inglés, nos dejan sin ellas, hablo en concreto de la opción para crear slideshows con las galerías de fotos que tenemos en nuestra cuenta.

Pues como podréis adivinar después de leer el parrafo anterior, la posibilidad de utilizar estas opciones, solo la encontramos en la versión en inglés, así que si queremos utilizarlas, tendremos que configurar nuestra cuenta para que se muestre en el idioma de Shakespeare, para hacer esto, símplemente nos vamos a la página de configuración, cuyo enlace se encuentra en la parte superior derecha de la página y establecemos nuestro idioma por defecto a inglés.

Después de hacer este pequeño cambio, aceptamos y nos vamos a la galería que queremos incrustar en el blog, y a la izquierda de la galería nos encontraremos con 2 nuevas opciones, al pinchar sobre la primera de ellas, “Embed slideshow”, se nos abre una ventana en la que tendremos que seleccionar el tamaño del slideshow, por ejemplo, para este blog, yo utilicé un tamaño de 400 píxels y quedaba bien. Después de seleccionar el tamaño, copiamos el código que nos aparece en el cuadro de texto amarillo (”Embed slideshow”) y lo pegamos en la ventana de edición de HTML (suele ser una pestaña llamada”código” o algo así xD) de nuestro gestor del blog y ya tenemos un bonito slideshow :-)

Ejemplo –> Pincha aquí

La segunda opción, que si aparece en la versión en castellano, es la llamada “Link to this album”, esta, abre un pequeño cuadro de diálogo al pinchar sobre ella, este cuadro tiene 2 opciones, la primera nos dá un simple enlace a la galería, mientras que la segunda, crea un enlace a la galería mostrando la imagen que tenemos configurada como portada de la galería, es decir, no muestra lo mismo que cuando entramos a picasa y vemos todas nuestras galerías, esto es útil si queremos poner varias galerías en la misma página, ya que así no la sobrecargamos demasiado y la carga de esta es bastante más rápida que si pusieramos slideshow’s.

Ejemplo:

Madrid


Primera batalla con wordpress

11 02 2008

Saludos terrícolas xD

Empezamos bien la andadura del blog. Después de poner el blog lo suficientemente bonito para mi gusto, me he puesto a instalar plugins hasta que esto se ha cansado, el problema en cuestión, es que parece ser que el php viene configurado por defecto para funcionar con 8MB de RAM, lo cual se queda un poco escaso para ciertas cosas, como por ejemplo, los plugins para estadísticas.

En mi caso, he instalado el Wassup, pero al darle a activar el plugin, la catástrofe se ha cernido sobre mi cabeza, y es que ha empezado a salirme el siguiente error:

Fatal error: Allowed memory size of 8388608 bytes exhausted

¿Que los bytes se han cansado? ruaro ruaro ruaro xD

Pues despues de algunas investigaciones, he llegado a la conclusión de que era la falta de memoria que comentaba antes, y también he encontrado la solución (por supuesto), es tan sencilla, como añadir la siguiente línea al principio del archivo principal del plugin, es decir, justo después del “<?php”:

ini_set(”memory_limit”,”24M”);

y voilá, arreglado :)

Nota: El valor 24 se puede cambiar por el que más nos convenga.