redimensionar - reducir tamaño de imagen en ubuntu
¿Cómo cambiar el tamaño de las imágenes en Ubuntu recursivamente dentro de la terminal? (7)
Puedes copiar / pegar este código en ubuntu y guardarlo como "resize.sh"
#! / bin / bash -e
CUR_DIR = `pwd`
cd $ 1
#resize
para archivo en * .jpg;
hacer
convert $ file -resize 50% $ file;
hecho
cd $ CUR_DIR
Después de guardar este archivo, ejecútelo desde la terminal usando "./rotate.sh folder_containing_images"
Para obtener más información, visita installthetech.com
Tengo varias imágenes almacenadas en un conjunto de carpetas organizadas. Necesito volver a clasificar según el tamaño las imágenes a un porcentaje específico recursivo de su directorio principal. Estoy ejecutando Ubuntu 11.10 y prefiero aprender cómo hacerlo directamente desde la terminal.
Extendiendo la respuesta de @betabandido
En caso de que haya espacios en nombres de archivos o carpetas en los que estén las imágenes, entonces uno debe usar -print0 con find y -0 con xargs para evitar cualquier error de análisis.
find . -name "*.jpg" -print0 | xargs -0 convert -resize 50%
find . -name "*.jpg" -print0 | xargs -0 mogrify -resize 50%
Puede usar la herramienta imagemagick para cambiar el tamaño del lote.
Mantendrá la relación de aspecto
$ convert dragon.gif -resize 64x64 resize_dragon.gif
No mantendrá la relación de aspecto
$ convert dragon.gif -resize 64x64/! exact_dragon.gif
$ cat resize.sh
#!/bin/bash
for f in `find . -name "*.jpg"`
do
convert $f -resize 45x60/! $f.resize.jpg
done
Cambiará el tamaño de la imagen a 45x60 sin mantener la relación de aspecto en el directorio actual.
Puedes usar imagemagick . Por ejemplo, para cambiar el tamaño de todas las imágenes JPG en el directorio actual al 50% de su tamaño original, podría hacer:
for f in `find . -name "*.jpg"`
do
convert $f -resize 50% $f.resized.jpg
done
Los archivos resultantes tendrán ".jpg" dos veces en sus nombres. Si eso es un problema, puede verificar las siguientes alternativas.
Para recorrer / encontrar los archivos para cambiar el tamaño, también puede usar xargs . Ejemplo:
find . -name "*.jpg" | xargs convert -resize 50%
Esto creará copias de las imágenes. Si solo desea convertirlos en su lugar , puede usar:
find . -name "*.jpg" | xargs mogrify -resize 50%
También funciona si le das la nueva resolución de cambio de tamaño:
convert $f.jpg -size 1024x768 $f.resized.png
También puedes usar
sudo apt-get install nautilus-image-converter
Pero esto solo funciona para la imagen en la carpeta actual. Simplemente instala y luego haz clic con el botón derecho sobre una imagen o varias y elige el tamaño que quieras y ya está.
Creo que esto también usa imagemagick.
hay algunas respuestas como:
find . -name "*.jpg" | xargs convert -resize 50%
esto no funcionará ya que ampliará la lista de esta manera: convert -resize 50% a.jpg b.jpg c.jpg
que cambiará el tamaño de a.jpg
en c-0.jpg
, b.jpg
en c-1.jpg
y dejar c.jpg
intacto.
Por lo tanto, debe ejecutar el comando de cambio de tamaño para cada coincidencia y dar tanto el nombre del archivo de entrada como el nombre del archivo de salida, con algo como:
find . -name "*.jpg" | xargs -n 1 sh -c ''convert -resize 50% $0 $(echo $0 | sed ''s//.jpg/-th/.jpg/'')''
cada coincidencia de find
se pasa individualmente por xargs -n 1
al script de cambio de tamaño: sh -c ''convert -resize 50% $0 $(echo $0 | sed ''s//.jpg/-th/.jpg/'')''
. Este script recibe el nombre del archivo en el argumento $0
, usa sed
para hacer un nombre de archivo de salida mediante la sustitución del sufijo .jpg
original por un -th.jpg
one. Y ejecuta el comando de convert
con esos dos nombres de archivo.
Aquí está la versión sin xargs
pero find -exec
:
find -name ''*.jpg'' -exec sh -c ''convert -resize 50% $0 $(echo $0 | sed ''s//.jpg/-th/.jpg/'')'' {} /;