Gerar miniatura com Imagemagick

1

Eu preciso gerar miniaturas para todas as imagens em uma pasta como esta (exemplo)

Imagem original:

Oqueeuquero:

Eu tentei este comando

mogrify *.jpg -gravity center -thumbnail 350x200 *.jpg

O que estou recebendo com este comando:

Plataforma - Windows 7.

    
por Renuka 25.11.2014 / 18:53

2 respostas

1

Uma miniatura é uma versão pequena do gráfico.

Você parece querer uma seção recortada do original, não uma miniatura. Então você está usando o comando errado. :)

Você deve usar redimensionar a imagem para uma das dimensões desejadas e, em seguida, usar a corte comando (s) para tirar uma cópia da seção desejada.

    
por 25.11.2014 / 20:03
1

Você quer cortar e redimensionar a imagem:

mogrify -crop 800x520+0+300 -resize 320x200 *.jpg

E, como as fotos são diferentes, talvez seja necessário ajustar os parâmetros de corte por imagem. Com alguns scripts, você pode programaticamente ajustar esses parâmetros no entanto, por exemplo, criar um script bash cut-resize.sh como abaixo e executá-lo com um argumento de nome de arquivo, portanto cut-resize.sh testimage.jpg :

#!/bin/bash
origX='identify $1 | cut -d' ' -f3 | cut -dx -f1'
origY='identify $1 | cut -d' ' -f3 | cut -dx -f2'
offset=300

eval "mogrify -crop ${origX}x$(($origY/2))+0+$offset -resize 320x200 $1"

Fará quase a mesma coisa - cortar 50% do meio da imagem e depois redimensionar, para qualquer tamanho de imagem. Você pode adicionar argumentos e variáveis adicionais para que você possa especificar seu deslocamento e a quantidade a ser cortada, mas deixe seu script cuidar da configuração da geometria para imagemagick.

Ou no Windows, o seguinte exemplo de lote pode funcionar, não tenho idéia, só tenho uma caixa linux, mas o ponto é que você pode fazer o ajuste de script das variáveis:

file=%1

rem identify %file%  | cut -d' ' -f3 | cut -dx -f1
for /f "tokens=3" %%G IN ('identify %file%') DO set temp=%%G
for /f "tokens=1" "delims=x" %%G IN ("%temp%") DO set oldx=%%G
for /f "tokens=2" "delims=x" %%G IN ("%temp%") DO set oldy=%%G

offset=300
newx=%oldx%
newy=%oldy%/2

mogrify -crop %newx%x%newy%+0+%offset% -resize 320x200 %file%

Uma boa referência para o script em lote, bash ou powershell é o link . A combinação de scripts com o Imagemagick é muito poderosa quando você cria seus fluxos de trabalho e scripts.

    
por 25.11.2014 / 20:23