 |
|
Boletín Espacio Linux
|
Las novedades del sitio y el mundo Linux en tu email.
|
|
|
|
|
|  |
|
Guión (script) para redimensionamiento masivo de imágenes
Publicado el: 10-26-2007 @ 09:56 pm
Si tenemos en mente producir un video a partir de imágenes, la geometría (formato) más usual de video puede no coincidir (probablemente no lo hará) con aquella con la cual se han tomado las fotos. Por ejemplo, en mi caso tomé las imágenes con calidad de 6 Megapíxeles lo que corresponde en mi cámara a un formato de 2848x2144 píxeles. Si tratamos de redimensionar a un formato de video conocido, como el de 720x480, nos damos cuenta que no existe una proporcionalidad adecuada porque si utilizamos el gimp sólo lograríamos 720x542 si no queremos distorsionar la imagen. Por ello, es necesario prescindir de una parte de ella (la inferior) para alcanzar el requerido 720x480 y que se espera no afecte grandemente la calidad de la misma (éste es mi criterio particular porque pudiese no ser así en algunos casos). Para pocas fotos, ese trabajo manual con el gimp puede ser llevadero pero cuando se trata de más de 1500 imágenes el procedimiento es verdaderamente tedioso. Por tanto, es necesario automatizarlo a través de un guión de bash. Esto se puede hacer a través del comando convert de la suite ImageMagick. El primer paso requeriría el redimensionamiento a 720x542 que se logra con la opción resize para, posteriormente con la opción crop, lograr el definitivo 720x480. El guión es muy sencillo y tiene la siguiente sintaxis: #!/bin/bash echo "Por favor, Espere..." for i in *.jpg do convert -resize 720x542 $i carpeta/$i convert -crop 720x480 carpeta/$i salida/$i rm salida/*-1* done En carpeta tendremos las imágenes 720x542 y en salida las correspondientes a 720x480. La opción crop en convert produce, para cada foto 720x542, dos imágenes. La primera tiene la geometría 720x480 (la que nos interesa) e incluye en su nombre, antes de la extensión jpg (si es el caso), los caracteres -0. La segunda es de geometría 720x62 e incluye en el nombre los caracteres -1. Como no se requieren estas últimas se remueven en la última parte del guión. Por otra parte, el script tardó alrededor de 30 minutos (en una Core 2 duo) en producir 1142 imágenes de 720x480 a partir de los originales de 2848x2144 píxeles. Imagínense el tiempo a gastar si se hubiese empleado el gimp para el redimensionamiento manual individual que fue lo que me tocó hacer antes de decidirme a crear el guión.

Ultima actualización el 04-21-2008 @ 08:19 pm
|
|
Por: pendulo Publicado el 10-28-2007 @ 03:27 pm
Para el re-dimensionamiento original si vas a mantener las proporciones no es necesario el argumento del alto, si escribes solo:
convert -resize 720 fichero.jpg
el programa interpreta esto como el ancho y mantiene la la proporción.
|
|
Por: pendulo Publicado el 10-28-2007 @ 03:31 pm
Debe aclararse que el comando de crop como está en el guión puede generar decenas de fotos si la original es muy grande. Por lo que si no se sigue al pie de la letra, la opción de borrado puede dejar gran cantidad de fotos en el directorio.
|
|
Por: pendulo Publicado el 10-28-2007 @ 04:57 pm
Sigo con mis cosas, espero no te moleste.
La opción de crop debes usarla de otro modo para que no te genere trocitos de imágenes. Además lo mas común es que la parte central de la imagen sea la que mas interese. Tal y como lo tienes en tu guión corta la imagen a partir del borde superior a la altura que le pides y luego te hace el resto de la foto como otra imagen que debes desechar.
Para evitar que crop haga esto hay que darle otros argumentos en la geometría.
La sintaxis general es la siguiente anchoXalto{+-}{+-} que son la geometría y la posición que quieres que corte, ejemplo: si partimos de una foto de 720x540:
Si escribes:
covert -crop 720x480+0+30
Te hace el corte desde el borde izquierdo x=0 a un ancho de 720 y el alto a partir de 30 pixel desde el borde de arriba y=30.
De esta forma tu imagen te queda "completa" en el ancho pero la altura se ha cortado en el centro de la imagen, a partir de 30 pixel por lo que queda también 30 pixels abajo que se pierden.
540 -480 = 60
60 / 2 =30
Probablemente sea mejor porque el fotógrafo siempre trata de central en la foto el tema de su interés.
|
|
Por: zeka Publicado el 10-28-2007 @ 09:52 pm
[pendulo dijo]"Debe aclararse que el comando de crop como está en el guión puede generar decenas de fotos si la original es muy grande. Por lo que si no se sigue al pie de la letra, la opción de borrado puede dejar gran cantidad de fotos en el directorio."
Yo probé el comando individualmente (fuera del guión) para ese formato y sólo generó dos imágenes hijas: una nombrada con -0 (la superior) y otra nombrada con -1. Dudo mucho que utilice un formato superior a 6 M píxeles (pesan alrededor de 2 MB cada foto) porque las fotos de 10 M píxeles ocupan un tamaño de 4 MB. Está bien que lo aclares para los que usen originales muy grandes pero si ese hubiese sido mi caso ten por seguro que lo hubiese tomado en cuenta. Por otra parte siempre me he empeñado en señalar que el guión me funciona para mi uso particular. No me interesa generalizarlo porque entonces, al usarlo, tengo que introducirle gran cantidad de parámetros que en el script ya los tengo fijos. El que lo requiera para un uso particular allí está la idea y si se quiere generalizar también. Por otra parte, yo probé el script con 1142 fotos que tomé en las vacaciones y lo que obtuve en 30 minutos de operación fue satisfactorio para mi. Esto no es un reto profesional sino sólo un hobby pero si lo puedo mejorar con tus ideas bienvenidas!.
Saludos
|
|
Por: pendulo Publicado el 10-28-2007 @ 10:11 pm
El asunto zeca es que las fotos que estas cortando con crop ya han sido escaladas a la medida en el ancho, y solo estás cortando el alto. por eso te genera solo una imagen "lastre". Pero si pruebas con una imagen que tenga por ejemplo 1024x768 y haces un crop a 720x480 verás que hace mas de una.
No te preocupes no te sigo fastidiando.
Saludos
|
|
Por: zeka Publicado el 10-28-2007 @ 10:16 pm
[pendulo dijo]"Sigo con mis cosas, espero no te moleste.
La opción de crop debes usarla de otro modo para que no te genere trocitos de imágenes. Además lo mas común es que la parte central de la imagen sea la que mas interese. Tal y como lo tienes en tu guión corta la imagen a partir del borde superior a la altura que le pides y luego te hace el resto de la foto como otra imagen que debes desechar.
Para evitar que crop haga esto hay que darle otros argumentos en la geometría.
La sintaxis general es la siguiente anchoXalto{+-}{+-} que son la geometría y la posición que quieres que corte, ejemplo: si partimos de una foto de 720x540:
Si escribes:
covert -crop 720x480+0+30
Te hace el corte desde el borde izquierdo x=0 a un ancho de 720 y el alto a partir de 30 pixel desde el borde de arriba y=30.
De esta forma tu imagen te queda "completa" en el ancho pero la altura se ha cortado en el centro de la imagen, a partir de 30 pixel por lo que queda también 30 pixels abajo que se pierden.
540 -480 = 60
60 / 2 =30
Probablemente sea mejor porque el fotógrafo siempre trata de central en la foto el tema de su interés."
Como me va a molestar si lo que quieres es ayudar a mejorar esto. Entiendo que tu procedimiento puede ser favorable para algunas fotos pero para otras no. Yo no soy profesional tomando fotagrafías y si sigo ese consejo en todos los casos me doy cuenta que podría "descabezar" estatuas ó cúpulas de catedrales en algunas fotos "muy ajustadas". Tal vez, lo mejor sería probar scripts con otros procedimientos (incluyendo el tuyo) y decidir al final cual es el arroja los mejores resultados en el mayor porcentaje de casos. Yo entiendo tu preocupación y a veces lo peor que a uno le puede pasar es que las cosas le funcionen a la primera (como en este caso) y no visualice de entrada todas las posibilidades. Aquí estás tu para señalarlas.
Saludos
|
|
Por: zeka Publicado el 10-28-2007 @ 10:25 pm
[pendulo dijo]"El asunto zeca es que las fotos que estas cortando con crop ya han sido escaladas a la medida en el ancho, y solo estás cortando el alto. por eso te genera solo una imagen "lastre". Pero si pruebas con una imagen que tenga por ejemplo 1024x768 y haces un crop a 720x480 verás que hace mas de una.
No te preocupes no te sigo fastidiando.
Saludos"
No se porque insistes en decir que me estás fastidiando. Tus observaciones son valederas, ya estamos todos advertidos y por mi parte yo las voy a poner en práctica cuando sea el caso.
Saludos
|
|
Por: zeka Publicado el 10-28-2007 @ 11:19 pm
Amigo pendulo
"Primero es Sábado que Domingo". Es cierto lo que dices que al hacer un crop de una imagen de ese tipo va a producir más de una imagen "lastre". Seré más preciso: produce 4. Sin embargo, con el resize previo yo NUNCA le voy a dar oportunidad de que ello ocurra (siempre producirá dos). El caso es similar al que yo trato aquí porque el resize a 720 de 1024x768 es 720x540. Te repito "Primero es Sábado que Domingo". También sé que el método que empleo aquí puede ser contraproducente en algunos casos, por ejemplo, si lo que queremos obtener finalmente es una imagen de nuestro escritorio Gnome ó KDE. Pero no lo es. Son fotos de paisajes, monumentos, etc, cuya proporcionalidad permite mayor flexibilidad. Por otra parte, si tuviese que hacer algo similar, porque no queda más remedio, a lo que se ve en la mayoría de las peliculas en DVD para TV (franja negra abajo y arriba) lo haría si mi interés es preservar la proporcionalidad.
Saludos
|
|
Por: pendulo Publicado el 10-29-2007 @ 12:37 pm
De acuerdo al 100%, el asunto de las fotos es bastante "individualista" cada foto tiene su "personalidad" solo te comentaba cosas que creo que enriquecen el tema.
Del debate salen las mejores soluciones,
Aunque tu guión funciona perfectamente, puede alguien pensar que es la "llave de los truenos", no obstante hay casos en los que el tema puede ser diferente, por eso coloco estas cosas. De esta forma puede tener elementos de juicio para tomas sus propias decisiones.
Sigue adelante, estás organizando un guión con el que se puede resolver un problema que creo nadie ha tratado en un solo programa de un par de click.
|
|
Por: zeka Publicado el 10-30-2007 @ 09:10 am
Gracias pendulo. Estoy incorporando tus sugerencias "de a poco" en la medida que puedo. Me preocupó que debido a tus tres comentarios consecutivos sin respuesta me parece que percibiste en mi una falta de atención en cuanto a no tomarlos en cuenta. Nada mas lejos de la realidad. Lo que pasa es que estuve fuera de la ciudad y tuve que dejar ésto momentáneamente. Estamos en contacto.
Saludos
|
|
|
|