Modificar imágenes desde la línea de comandos con ImageMagick

ImageMagick es un completísimo paquete de programas multiplataforma para el tratamiento de imágenes. A diferencia de programas como Photoshop o Gimp, los programas que lo componen se ejecutan desde la línea de comandos, aunque también dispone de un sencillo entorno para X Window en Linux.

Entorno gráfico de ImageMagick en Linux

Tiene numerosas herramientas que, entre otras cosas, permiten:

  • Convertir entre una gran cantidad de formatos de imágenes.
  • Manipular la paleta de colores de una imagen.
  • Añadir tramados.
  • Crear un gif animado a partir de varias imágenes.
  • Superponer una imagen encima de otra.
  • Añadir texto a una imagen.

En la documentación se puede ver un listado detallado.

En la web es frecuente que el gestor de contenidos cree automáticamente réplicas de diferentes tamaños a partir de una imagen subida por el usuario para su correcta visualización en diferentes páginas. Por lo tanto, sin duda lo más usado para la web es su capacidad de reescalar imágenes, para lo que usa el algoritmo de «liquid rescaling«. Ademas la modificación de tamaño es muy flexible, permitiéndonos lograr la modificación que estemos buscando.

Tal vez algún lector se esté preguntando que habiendo programas con entorno gráfico como los citados más arriba, para qué trabajar en el modo texto de la shell de Linux/Unix. Veamos entonces un caso en que sería conveniente. Resulta fácil que una web acabe teniendo miles de imágenes distribuidas en cientos o miles de directorios, pues, por cada imagen que el administrador del contenido sube se van a crear varias copias con diferentes tamaños. Fácilmente el total de imágenes de un catálogo de productos, por ejemplo, se vuelve inmenso. Imaginemos que un cambio de diseño o la necesidad de hacer la web responsive hace necesario modificar el tamaño de una de las copias que se estaba guardando de cada imagen. En vez de modificarlas una a una con nuestro programa de edición de imágenes favorito, se puede crear un shell script como este:

ls *jpg | while read i
do
f=`basename $i .jpg`
convert $i -resize 200x200 smaller-$f.jpg
done

Lo que hace es buscar todas las imágenes jpg del directorio y gracias al comando convert de ImageMagick crea una copia más pequeña reescalada a 200×200 píxeles cuyo nombre será la cadena «smaller-» concatenada al nombre del fichero original. Fácilmente se podría modificar el script para que recorriera recursivamente todos los subdirectorios.

Todo lo que nos ofrece ImageMagick se puede utilizar desde diferentes lenguajes de programación y no solo porque desde éstos se pueda invocar comandos en la shell* y por lo tanto a ImageMagick, si no que el paquete ha sido portado. Está disponible en Java, .NET, Ruby, Pearl, Python, Php, etc. Aquí hay una lista detallada de todos.

En el caso concreto de PHP existe la extensión nativa IMagick. Sin duda es GD la extensión más extendida, valga la redundancia, en PHP. A pesar de su mayor propagación, y como es tan frecuente en el mundo de la informática, IMagick presenta algunas ventajas sobre GD que la convierten en una mejor extensión para trabajar con imágenes. Aquí un artículo con una comparación entre ambas.


* Como hace Drupal, el extendido CMS en PHP.


Aunque la palabra comando es un calco de inglés y en español es más correcto usar orden o instrucción, uso el término que usamos habitualmente en nuestro trabajo.


 

Chuck Norris también en el HTML

Chuck Norris, el único hombre, perdón, Hombre, que ha contado dos veces hasta infinito, también dispone de un color en HTML, un rojo probablemente inspirado por las pasiones que despierta:

Chuck Norris

Como si fuera el valor «green» o «yellow» para el atributo bgcolor, «chucknorris» es un color más, concretamente el #C00000

Este es el código del ejemplo:

<table>
   <tbody>
      <tr>
         <td align="center" bgcolor="chucknorris" width="100%">Chuck Norris</td>
      </tr>
   </tbody>
</table>

Él


Aclaración para navegantes:

Obviamente esto es una broma. El color chucknorris no está definido en el estándar. Funciona, o algo parecido, tomándolo por rojo, por como el navegador interpreta los códigos hexadecimales de los colores.

Yahoo toca fondo

Verizon ha comprado Yahoo, y encima lo ha logrado con una rebaja importante por la devaluación sufrida al conocerse las vulnerabilidades de seguridad que permitieron el robo de los datos de millones de usuarios.

De ser una de las grandes de Internet, pero con miedo a Microsoft, a ver como primero Google, y después otros, la pasaban a toda velocidad dejándola en la cuneta. Querer ser una compañía de contenidos, quitar el control de los productos a los programadores para dárselo a diseñadores y jefes de proyectos fue el principio del fin.

Según leí en su momento, las pérdidas de datos de sus usuarios fueron debidas a priorizar el volumen de tránsito por encima de todo, incluida la seguridad, a pesar de las advertencias de los técnicos. Eso ya fue el fin.

Muy interesante el ensayo de Paul Graham, ex-empleado de Yahoo, que leí hace años, para conocer los barros que la llevaron a estos lodos.

Cómo funciona la firma digital

Acaba de pasar la campaña de la declaración de la renta de este año y millones de españoles la hemos realizado telemáticamente, por lo tanto hemos firmado digitalmente nuestra declaración; pero no por habitual es conocido por todos para qué sirve y cómo funciona la firma digital.

Antes de dar respuesta a estas preguntas no está de más decir que muchas veces decimos «firma electrónica» para referirnos a la digital cuando ésta es un concepto jurídico. La firma electrónica son unos datos que acompaña la información e identifican al emisor firmante. Podría incluso ser una imagen que contiene nuestra firma de puño y letra escaneada, otro tema sería la nula seguridad y validez legal de dicho método. Los países en cuya jurisdicción existe la firma electrónica, sólo otorgan a una firma digital segura la equivalencia funcional de una firma manuscrita.

El objetivo de la firma digital es garantizar que en el envío del emisor al receptor el documento no ha sufrido ninguna alteración. Para lograrlo utiliza la criptografía asimétrica que, a diferencia de la simétrica que sólo usa una clave para el cifrado, utiliza dos claves llamadas pública y privada. La administración española sólo reconoce a las autoridades de certificación como emisores válidos de claves.

Cómo funciona

Generalmente se habla de documentos, pero realmente lo enviado y firmado puede ser cualquier tipo de archivo: desde una imagen a un ejecutable. Sobre el fichero a firmar en primer lugar se aplica una función de hash criptográfica, una de calidad, un algoritmo md5 no sirve. Sobre la cadena que devuelve la función de hash se aplica el algoritmo de criptografía asimétrica que mediante la clave privada cifrará la cadena. La razón por la que no se emplea la solución salomónica de aplicar la criptografía asimétrica directamente sobre el fichero es su elevado coste computacional comparada con las funciones de hash criptográficas, que resultará en un proceso más lento cuanto más grande sea el fichero. El resultado es la firma digital.

Firma Digital

Esquema del funcionamiento de la firma digital

Sigue leyendo

Google deja de leer Gmail

Google ha anunciado recientemente que ya no escaneará los emails de los usuarios de Gmail:

Google has decided to follow suit later this year in our free consumer Gmail service. Consumer Gmail content will not be used or scanned for any ads personalization after this change.

Algo que no hacen ni Yahoo ni la compañía más criticada en el pasado reciente por sus prácticas: Microsoft. ¿Qué hubiera pasado si fuera Microsoft la que lee los emails de Hotmail (ahora Outlook)? Probablemente muchos hubieran puesto el grito en el cielo. Pero para Google hay otro rasero.

Cuando hace bastantes años atrás leí que «Don’t be evil» (no seas malvado) es su lema para la conducta interna me llamó la atención leer tantas opiniones favorables a Google, como si fuera fuente de toda virtud. Fui un poco escéptico y pensé que Google, como todas las grandes empresas, tiene como objetivo rendir beneficios a sus accionistas; ni es una ONG ni son las hermanitas de la caridad. El caso es que su estrategia de marketing les funcionó porque durante años todos los usuarios de Gmail hemos estado conformes con que Google escaneé nuestros emails para ofrecernos una publicidad más personalizada. Como bien dice el refrán: más vale caer en gracia que ser gracioso. Google supo desde el principio que no bastaba con tener la mejor tecnología.