
나는 노력한다차이점을 빠르게 확인하세요별도의 반복 사이에웹사이트 ImageMagick을 사용합니다 compare
.하지만 이미지 비교를 거부합니다다른 크기, 모서리에 고정된 무한 캔버스를 단순히 시뮬레이션하는 옵션은 없는 것 같습니다. -subimage-search
이는 다음과 같은 이유로 내가 원하는 것이 아닙니다.
- 어느 이미지가 더 큰지 모르겠습니다. (A가 가장 크고 B가 가장 넓은 이미지 A와 B를 지원하지 않는 것 같습니다.)
- 같은 모서리에 이미지를 고정하고 싶습니다. 가장 일치하는 항목을 검색하려면 다음이 필요할 수 있습니다.많은더 길어지고 더 나은 결과를 제공하지 않습니다(이 목적을 위해).
현재 솔루션은 작동하지만 비효율적이고 투박하게 느껴집니다.
max_width_1="$(identify -ping -format "%w" 1.png)"
max_width_2="$(identify -ping -format "%w" 2.png)"
max_width="$((max_width_1>max_width_2?max_width_1:max_width_2))"
max_height_1="$(identify -ping -format "%h" 1.png)"
max_height_2="$(identify -ping -format "%h" 2.png)"
max_height="$((max_height_1>max_height_2?max_height_1:max_height_2))"
convert -extent "${max_width}x${max_height}" -background transparent 1.png 1.png
convert -extent "${max_width}x${max_height}" -background transparent 2.png 2.png
답변1
변수 약어는 코드의 시각적 명확성을 위해서만 사용되며 변경할 필요가 없습니다.실제더 긴(유지관리자 친화적인) 변수 이름.
identify
기능 코드는 4개 대신 하나의 인스턴스를 사용하고, read
변수를 로드하는 데 사용하고( xargs
코드 줄을 절약하기 위해 비효율성을 사용함) 몇 가지 bash
주의 사항을 사용하여 줄일 수 있습니다.
read mw1 mh1 mw2 mh2 <<< $(identify -ping -format "%w %h " [12].png)
mw="$((mw1>mw2?mw1:mw2))"
mh="$((mh1>mh2?mh1:mh2))"
echo {1,1,2,2}.png | xargs -n 2 convert -extent "${mw}x${mh}" -background transparent
아니면 변수 대신 배열을 사용하는 것이 더 깔끔할 수도 있습니다.
read w[1] h[1] w[2] h[2] <<< $(identify -ping -format "%w %h " [12].png)
w[0]="$((w[1]>w[2]?w[1]:w[2]))"
h[0]="$((h[1]>h[2]?h[1]:h[2]))"
echo {1,1,2,2}.png |
xargs -n 2 convert -extent "${w[0]}x${h[0]}" -background transparent