imagemagick 변환: 자르기를 최대 X 픽셀로 제한

imagemagick 변환: 자르기를 최대 X 픽셀로 제한

ImageMagick(debian stable에서는 6.9.11-60)을 사용하여 스캔한 페이지(jpg 또는 TIFF)에서 약 24px를 면도하고 싶지만 해당 영역이 실제로 "비어 있는"(즉, 대부분 흰색) 경우에만 가능합니다.

를 사용하겠지만 -shave해당 영역이 흰색이 아니더라도 픽셀을 제거합니다.
그런 다음 생각했지만 -trim최대 24px로 제한하는 방법을 모르겠습니다.

질문: 스캔한 이미지의 왼쪽과 오른쪽 24px를 제거하는 방법이 있지만범위가 비어 있는 경우에만?
IM을 사용하지 않는 것이 좋겠다는 생각이 먼저 들었습니다.

답변1

저는 ImageMagick 전문가가 아니기 때문에 한마디로 말씀드릴 수는 없지만, 실행 -trim하고 결과를 확인하실 수는 있습니다. png를 출력하면 원본 이미지에서 새 이미지의 출처에 대한 정보가 저장됩니다.캔버스(jpg일지라도). 결과 이미지의 x 오프셋과 너비를 사용하여 identify자르려는 24픽셀을 초과하는지 추출하고 확인할 수 있습니다. 예 -fuzz 10%를 들어 트림이 흰색 픽셀 이상을 허용하도록 선택적으로 추가할 수 있습니다 . 분명히 자르기로 결정했다면 -shavejpg를 사용하고 출력할 수 있습니다. 내장 이미지를 사용한 예는 다음과 같습니다.

check(){
  origwidth=$(convert out.png -format "%W" info:)
  left=$(     convert out.png -format "%X" info:) 
  width=$(    convert out.png -format "%w" info:)
  let right=origwidth-left-width
  if [ "$left" -lt 24 -a "$right" -lt 24 ]
  then  echo "trim ok"
  else  echo "dont trim"
  fi
}

convert rose:    -resize 160x160 inset.jpg
convert granite: -resize 200x200 bg.jpg

composite inset.jpg -geometry +20+20 bg.jpg input.jpg
convert   input.jpg -fuzz 10% -trim         out.png
check

composite inset.jpg -geometry +30+20 bg.jpg input.jpg
convert   input.jpg -fuzz 10% -trim         out.png
check

관련 정보