이미지 분할을 위한 Oneliner?

이미지 분할을 위한 Oneliner?

이미지를 주어진 비율로 잘라낼 수 있는 oneliner 명령을 찾고 있습니다.

입력이 파일 이름과 슬라이스 크기라고 가정합니다. 이를 달성하기 위한 표준 명령줄 도구가 있습니까? 내 이미지가 크게 혼란스러워서 ImageMagick을 시도했지만 성공하지 못했습니다(크고 대부분 투명하며 png입니다).

답변1

이 질문이 좀 오래된 질문이라는 것을 알고 있지만 JRW의 솔루션을 사용하여 스크립트를 작성했습니다. 스크립트는 이미지 파일을 지정된 크기의 일련의 이미지로 분할합니다.

#!/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

매개변수 1은 파일 이름과 블록의 두 번째 너비입니다. 대부분의 경우 스크립트는 마지막 블록에서 오류를 반환하지만 마지막 블록이 루프 외부에서 잘린 후에는 모든 것이 다시 잘 작동합니다... :)

답변2

네트워크 PBM도구는 이것을 할 수 있습니다. 자르기에 관해 이야기하는 경우 :

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

크기를 조정하려면 pnmscale을 사용하십시오.

관련 정보