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 ...:)