Quero girar todas as imagens em um diretório que corresponda a um padrão.
Até agora eu tenho:
for file in `ls /tmp/p/DSC*.JPG`; do
convert $file -rotate 90 file+'_rotated'.JPG
done
mas isso não dá saída?
fonte
Quero girar todas as imagens em um diretório que corresponda a um padrão.
Até agora eu tenho:
for file in `ls /tmp/p/DSC*.JPG`; do
convert $file -rotate 90 file+'_rotated'.JPG
done
mas isso não dá saída?
Existem alguns problemas com seu código. Primeiro de tudo, você está analisando ls, o que é uma Má Idéia . Você também precisa se referir à variável conforme $file
indicado e também deve citá-la para que não se quebre em espaços. Você está declarando, num
mas nunca é usado. Uma maneira mais segura seria:
find /tmp/p/ -name "DSC*.JPG" | while IFS= read -r file; do
convert "$file" -rotate 90 "$file"_rotated.JPG
done
Isso ainda terá problemas se seus arquivos contiverem novas linhas, mas pelo menos não serão interrompidos se o seu caminho contiver espaços.
Se os arquivos estiverem todos no mesmo diretório, poderá ser ainda mais simplificado usando o globbing. Você também pode usar a expansão de parâmetros para criar, em foo_rotated.JPG1
vez de foo.JPG_rotated.JPG
:
for file in /tmp/p/DSC*.JPG; do
convert "$file" -rotate 90 "${file%.JPG}"_rotated.JPG
done
original_filename.JPG_rotated.JPG"
. adicionar"${file%.JPG}"_rotated.JPG
será imho mais apropriado. Felicidades!mogrify -rotate 90 *.jpg
O One-Liner melhor para girar todas as imagens com o imagemagickmogrify -rotate 90 /tmp/p/DSC*.JPG
irá infactar girar tudo.JPG
começando comDSC
nop
diretórioMogrify (parte do imagemagick) difere de
Convert
que modifica o arquivo original http://www.imagemagick.org/script/mogrify.phpfonte
Um método simples usando PE (expansão de parâmetros) é
fonte
bash
específico, é a sintaxe POSIX sh perfeitamente padrão.Não analise
ls
e ols
não é necessário aqui. Além disso, você deve citar suas variáveis caso elas contenham espaços.fonte
Não é uma solução imagemagic, mas
girará todas as imagens que terminem em .JPG 90 graus. É um bom forro.
fonte
Eu precisava me referir ao arquivo como
$file
, iefonte
Você pode copiar / colar esse código no ubuntu e salvá-lo como "rotate.sh"
Depois de salvar este arquivo, execute-o no terminal usando
./rotate.sh folder_containing_images
fonte