Redimensionar varias imagenes simultaneamente

En creationgif me encuentro un Script para Nautilus que nos puede interesar si tenemos varias imagenes y queremos redimensionarlas todas simultaneamente. Esto nos hace ganar un tiempo valioso, en lugar de usar por ejemplo el Gimp para ir abriendolas una a una y cambiando su tamaño.

320×320-screen3.png

Para instalarlo, copias el script en tu directorio Home en la subcarpeta .gnome2/nautilus-scripts/, le das permisos de ejecucion y ya deberias poder usarlo sin problemas (seleccionas el conjunto de imagenes que quieres cambiar el tamaño, click derecho y te vas a la opcion del menu Scripts > nis).

El script te lo descargas aqui

De todas formas aqui pego el contenido del script de nombre “nis” (por si no fuera accesible):


#!/bin/bash
#
# Author : Mathieu Vilaplana <mathieu@creationgif.com>
# Author : Matthieu MARC <matthieu.marc@wanadoo.fr>
#
# Copyright (C) 2005,2006 Charles Bouveyron <charles.bouveyron@free.fr>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# pour l'internationalisation des messages
# to generate the i18n file from .po file :
# $ msgfmt -o .locale/fr/LC_MESSAGES/nis.mo .locale/fr/LC_MESSAGES/fr.po
export TEXTDOMAIN="nis"
export TEXTDOMAINDIR=`dirname $0`"/.locale/"
MAXCPT=50000;
nb_images=0;
selection="";
txt_error="`gettext 'error'`"
#test if a file has been selected
if [ $# -eq 0 ]; then
# zenity --error --title=$txt_error --text="`gettext 'You must select at least 1 file to process'`"
here=`pwd`"/."
files=`zenity --file-selection --multiple --separator="|" --filename="$here"`"|"
#if $? != 0, user click on cancel button, so exit
if [ "$?" != 0 ] ; then
exit
fi
cpt=0
# I put all filename in $selection here because I didn't managed to put filenames with whitespace in $*
while [ ${#files} -gt 0 ]; do
f="`echo $files |cut -f1 -d'|'`"
isimage=`file -bi "$f" |grep -c image`
if [ $isimage -eq 1 ]; then
selection[$nb_images]=$f
let "nb_images++"
fi
files=`echo $files |cut -f2- -d"|"`
let "cpt++"
# only to avoid infinite loop (do not occured normaly, but nobody never know.. perhaps!)
if [ $cpt -gt $MAXCPT ]; then
shift
fi
done
fi
#===================================
# SELECT SIZE DIALOG
txt_text="`gettext 'Choose which size to scale to'`"
txt_title=$txt_text
txt_size="`gettext 'size'`"
imgsize=`zenity --title "$txt_title" --text "$txt_text" --list --radiolist --separator=" " --column="" --column="$txt_size" FALSE "160x120" FALSE "320x240" FALSE "640x480" TRUE "800x600" FALSE "1024x768" --height=220`
#if $? != 0, user click on cancel button, so exit
if [ "$?" != 0 ] ; then
exit
fi
#user must select a target size
imgsize=`echo $imgsize | sed 's/ max//g'`
if [ ! "$imgsize" ]; then
zenity --error --title=$txt_error --text="`gettext 'select a target size'`"
# just restart myself (more user friendly I think)
($0 "$*")&
exit
fi
#transform 640x480 en 640x640 for convert to respect proportions
himgsize=$imgsize
val1=`echo "$imgsize" | awk -F'x' '{ print $1 }'`
imgsize="${val1}x${val1}"
# END SELECT SIZE DIALOG
#=========================
#Select only images
while [ $# -gt 0 ]; do
isimage=`file -bi "$1" | grep -c image`
if [ $isimage -eq 1 ]; then
selection[$nb_images]=$1
let "nb_images++"
else
isdir=`file -b "$1" |grep -c directory`
if [ $isdir -eq 1 ]; then
for f in `ls -1 "$1"`; do
isimage=`file -bi "$1/$f" |grep -c image`
if [ $isimage -eq 1 ]; then
selection[$nb_images]="$1/$f"
let "nb_images++"
fi
done
fi
fi
shift
done
n=$nb_images
let "n=n-1"
(for i in `seq 0 $n`;do
picture=${selection[$i]}
img_filename=`basename "$picture"`
img_dirname=`dirname "$picture"`
#create directory if not exist and at least one image to process
if [ ! -d "$img_dirname/$himgsize" ]; then
mkdir -p "$img_dirname/$himgsize"
fi
let "compteur += 1"
echo "`gettext '# Processing image'` $compteur / $nb_images $img_filename ..."
convert -quality 80 -resize $imgsize "$picture" "$img_dirname/$himgsize/$img_filename"
#convert -quality 80 -resize $imgsize "$picture" $himgsize/"$picture"
let "progress = compteur*100/nb_images"
echo $progress
done
) | zenity --progress --auto-close --title="`gettext 'Scaling images'`" --text="`gettext 'Processing images ...'`" --percentage=0
(gnome-open "`dirname \"${selection[0]}\"`/$himgsize") &
exit

Por defecto solo te deja convertir las imagenes a 160×120, 320×240,640×480 y 1024×768, pero es muy sencillo de editar para añadir nuevos formatos.

6 Responses to “Redimensionar varias imagenes simultaneamente”


  1. 1 Jean Bermúdez mayo 9, 2007 de 12:41 am

    Hola, Te comento que he estado buscando algo similar desde hace tiempo y finalmente me consigo con algo que funciona. Gracias.

    Te comento el script tiene las siguientes dependencias:

    * zenity (replace gtkdialog)
    * imagemagick
    * bash

    Un Saludo,

    BJean

  2. 2 superpiwi mayo 9, 2007 de 5:42 am

    Puedes emplear tambien esto desde la linea de comandos:

    for i in `ls . *.jpg` ; do
    convert $i -resize 800×600 -quality 70 peque_$i
    done

    Cambiando por los valores que quieras de tamaño y calidad de imagen (convert viene incluido en imagemagick)

  3. 3 Néstor agosto 18, 2008 de 8:36 pm

    ¡GRACIAS!
    ¡Magnífico script!

  4. 4 josefina delgado diciembre 16, 2008 de 3:05 am

    me cago en ud por ser tan imnorante piense no sea bestia sea mas inteligente y piense antes de escribir

  5. 5 DjLaMomia septiembre 26, 2009 de 2:25 am

    Yo acabo de instalar este script en Ubuntu 9.04 y funciona perfectamente, muy bueno. (hay que descomprimirlo)

  6. 6 Pilex noviembre 18, 2009 de 12:18 pm

    Excelente, funciona perfecto, agregue para redimensionar en 60×60 y 120×120 y andubo joya…

    FALSE “60×60” FALSE “120×120” FALSE “160×120” FALSE “320×240” FALSE “640×480” TRUE “800×600” FALSE “1024×768” –height=220`

    Salutes!


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s







¿Es compatible tu equipo con Ubuntu?


( Muchos fondos de pantalla, aqui )

DESCARGATE SCIFI LIFE

365 Dias de Soledad
Me debes los sueños, las promesas y las noches rotas. Me debes la paz, la sonrisa y la esperanza robadas. Me debes la sangre, las lágrimas y el sudor vertido. Me debes las noches vacías, los abrazos anhelados. Me debes un beso de ajenjo de tu amarga boca.

The Ubuntu Counter Project - user number # 11961
Geo Visitors Map
abril 2007
L M X J V S D
« Mar   May »
 1
2345678
9101112131415
16171819202122
23242526272829
30  

Blog Stats

  • 30.955.468 hits

A %d blogueros les gusta esto: