Resize de imágenes V 1.0, 2.0 y 3.0
Ante la necesidad de tener que reajustar el tamaño de las fotos para poder hacer paquetes de fotos de un tamaño razonable, para su descarga; he indagado un poco y he descubierto el paquete ImageMagick. Con un poco de ayuda del absurdo he hecho este sencillo script:
VERSION 1.0
#!/bin/bash # Resize de imagenes a 800x600 para hacer paquetes de fotos # Hace uso del paquete ImageMagick "http://www.imagemagick.org/script/index.php" contador=0 if [ $1 = "-ayuda" ] then echo "" echo "COMO USAR: " echo "ajustar [opcion] archivos_de_imagen" echo "" echo "OPCIONES" echo "-n Borra la carpeta de destino antes de escribir en ella." echo "" echo "ejemplo: ajustar -n *.jpg" echo "Ajustará todas las imágenes de la carpeta actual borrando el contenido de la carpeta destino antes." else if [ $1 = "-n" ] then rm /ruta/carpeta/imagenes/reajustadas/*.jpg fi for parametro in $* do if [ $parametro = "-n" ] then echo Borrando carpeta de destino ... else echo Convirtiendo: $parametro convert $parametro -sample 800 "/ruta/carpeta/imagenes/reajustadas/$parametro" let contador=contador+1 fi done echo Convertidas con exito $contador fotos. fi # FI DE LA AYUDA |

He optimizado parte del código y ahora se puede elegir un ancho; de momento el alto es proporcional al ancho y no creo que vaya a cambiar esto, pues necesito fotos proporcionadas.
#!/bin/bash # Resize de imagenes a ****x**** # Hace uso del paquete ImageMagick "http://www.imagemagick.org/script/index.php" contador=0 #Contador de imagenes reajustadas Nancho=0 #Nuevo Ancho ancho=800 #Ancho por defecto if [ $1 = "-ayuda" ] then echo "" echo "COMO USAR: " echo "ajustar [opcion/es] archivo/s_de_imagen" echo "" echo "OPCIONES" echo "-n Borra la carpeta de destino antes de escribir en ella." echo "" echo "-t Cambia el ancho por defecto (800) por uno dado" echo "" echo "ejemplo:" echo " ajustar -n -t 600 foto1.jpg foto2.jpg" echo "" echo "Ajustará los ficheros 'foto1.jpg' y 'foto2.jpg' a un ancho de 600 (y una altura proporcional) borrando primero el contenido de la carpeta destino" else for parametro in $* do if [ $parametro = "-n" ] then rm /ruta/carpeta/imagenes/reajustadas/*.jpg echo Borrando carpeta de destino ... else if [ $Nancho = 1 ] then ancho=$parametro Nancho=0 else if [ $parametro = "-t" ] then Nancho=1 else echo Convirtiendo: $parametro convert $parametro -sample $ancho "/ruta/carpeta/imagenes/reajustadas/$parametro" let contador=contador+1 fi fi fi done echo "" echo " Convertidas con exito $contador fotos con un ancho de $ancho pixeles" echo "Para obetener mas informacion escriba: ajustar -ayuda" fi # FI DE LA AYUDA |

He añadido dos suculentas opciones nuevas:
#!/bin/bash # Resize de imagenes a ****x**** # Hace uso del paquete ImageMagick "http://www.imagemagick.org/script/index.php" # Para darle un uso útil a este script, hay que copiarlo a la carpeta "/usr/bin/" contador=0 #Contador de imagenes reajustadas Nancho=0 #Nuevo Ancho BOLEANA Nconvertidas=0 #Hubo conversión¿? Nzip=0 #Zip? Ccarpeta=0 #Cambio de carpeta?¿ Cresize="/media/hda6/foto/resize/" #Carpeta destino ancho=800 #Ancho por defecto if [ $1 = "-ayuda" ] then echo echo "COMO USAR: " echo echo "ajustar [opciones] archivos_de_imagen" echo echo "OPCIONES" echo "-c Cambia la carpeta destino. -c /ruta/carpeta/valida" echo echo "-n Borra la carpeta de destino antes de escribir en ella." echo echo "-t xxxxx Cambia el ancho por defecto (800) por uno dado (xxxxx)." echo echo "-z x.zip Crea un archivo ZIP (x.zip) que contendrá las fotos de la carpeta destino." echo echo "ejemplo:" echo " ajustar -n -t 600 -z dos_fotos.zip foto1.jpg foto2.jpg" echo echo " Ajustará los ficheros 'foto1.jpg' y 'foto2.jpg' a un ancho de 600 (y una altura proporcional) borrando primero el contenido de la carpeta destino.Una vez hecho esto se creará el archivador dos_fotos.zip con las imágenes contenidas en la carpeta destino." else for parametro in $* do if [ $Nzip = 1 ] then nombrezip=$parametro Nzip=2 else if [ $Ccarpeta = 1 ] then Cresize=$parametro Ccarpeta=0 else if [ $parametro = "-c" ] then Ccarpeta=1 else if [ $parametro = "-z" ] then Nzip=1 else if [ $parametro = "-n" ] then rm /media/hda6/foto/resize/*.jpg echo Borrando carpeta de destino ... else if [ $Nancho = 1 ] then ancho=$parametro Nancho=0 else if [ $parametro = "-t" ] then Nancho=1 else echo Convirtiendo: $parametro convert $parametro -sample $ancho "$Cresize$parametro" let contador=contador+1 Nconvertidas=1 fi fi fi fi fi fi fi done if [ $Nconvertidas = 1 ] then echo echo " Convertidas con exito $contador fotos con un ancho de $ancho pixeles." echo " Guardadas en: $Cresize" fi if [ $Nzip = 2 ] then zip "$Cresize$nombrezip" $Cresize*.jpg echo " Creado con éxito el archivador $nombrezip." fi echo echo "Para obetener mas informacion escriba: ajustar -ayuda" fi # FI DE LA AYUDA |

1 comentario:
Mola mucho! :-9
A mí me picó el gusanillo después de ver tu post y hice una versión en Python, pero usando una librería en vez de ImageMagick. Por si quieres echarle un vistazo, está en mi blog :-D.
Saludotes ^_^
Publicar un comentario