Oneliner para fatiar uma imagem?

3

Estou procurando um comando oneliner que dividiria uma imagem em proporções dadas.

Digamos que a entrada seja o nome do arquivo e as dimensões da fatia. Existe alguma ferramenta de linha de comando padrão para isso? Eu tentei ImageMagick sem sucesso, pois trilhou minha imagem imensamente (é grande, principalmente transparente, png).

    
por Eimantas 05.04.2011 / 14:55

2 respostas

2

Eu sei que essa pergunta é pouco antiga, mas eu escrevi script que está usando a solução JRW. Script está dividindo o arquivo de imagem em uma série de imagens de tamanho determinado:

#!/bin/bash
FILE=$1
FILENOEXT=${FILE%.*}
SLICEWIDTH=$2
WIDTH='file $FILE | cut -f5 -d" "'
NUMOFSLICES='echo "scale=2; $WIDTH/$SLICEWIDTH+1" | bc'
for i in 'seq $NUMOFSLICES'
do
    LAST=$(($SLICEWIDTH * $i - $SLICEWIDTH))
    pngtopnm $FILE | pnmcut -left $LAST -width $SLICEWIDTH | pnmtopng > cropped-$FILENOEXT-$i.png
done
pngtopnm $FILE | pnmcut -left $LAST | pnmtopng > cropped-$FILENOEXT-$i.png

O argumento um é nome do arquivo e segunda largura do pedaço. Na maioria dos casos, o script retorna erro no último pedaço, mas depois que o último pedaço é cortado fora do loop novamente e está tudo bem ...:)

    
por 04.07.2011 / 22:36
0
As ferramentas

netpbm podem fazer isso. Se você está falando sobre o corte:

$ pngtopnm image.png | pnmcut -width 500 -height 500 | pnmtopng > image_cropped.png

Se você quiser escalá-lo, use pnmscale.

    
por 05.04.2011 / 17:44