2017-11-04 6 views
0

저는 fu 스크립트를 사용하여 많은 이미지를 자르는 과정을 신속하게하려고합니다. 모든 이미지가 동일하게 잘립니다. 이미지의 가운데에있는 원을 선택한 다음 해당 원으로 이미지를 자릅니다. 원 주위의 추가 영역 (원 광고와 사각형 사이의 차이)은 투명해야합니다. 또한 선택한 크기로 자른 이미지 크기를 선호합니다.fu 스크립트를 사용하여 선택하고 자르려면 어떻게합니까?

내 질문의 두 번째 절반은 명령 줄에서 이러한 작업을 실행할 수 있습니까? 나는이 과정을 이미지 디렉토리에서 한 번에 모두 수행하는 것이 이상적입니다.

(사람이 다음이 같은 반복을 해결하기 위해 다른 접근 방식을 가지고 있다면 나는이 모든 작동 방식을 완전히 확인 쿵푸 스크립트에 새로운 아니다. 나는 그뿐만 아니라 감사하겠습니다.)

+0

그것은 김프로 해 드리겠습니다,하지만 가능성이 훨씬 쉬워 ImageMagick. 태그에 추가하여 적합한 사람들의 관심을 끌 수 있습니다. – xenoid

+0

추가됨. 방향에 진심으로 감사드립니다. – wesleywmd

+0

예제 이미지를 게시하여 수행하려는 작업을 볼 수 있습니까? Imagemagick에서는 mogrify 명령을 사용하여 전체 이미지 폴더를 처리 할 수 ​​있습니다. – fmw42

답변

1

나는이 생각 가까운, I로 시작하는 경우 :

enter image description here

#!/bin/bash 
# Get x,y coordinates of centre 
cx=$(convert bean.jpg -format "%[fx:int(w/2)]" info:) 
cy=$(convert bean.jpg -format "%[fx:int(h/2)]" info:) 
# Find point on circle circumeference 
pt="0,$cy" 
[ $cx -gt $cy ] && pt="$cx,0" 

# Now create a black and white circle of the right size as transparency 
convert bean.jpg                    \ 
    \(+clone -fill black -colorize 100% -fill white -draw "circle $cx,$cy $pt" -alpha off \) \ 
    -compose copyopacity -composite               \ 
    -trim +repage result.png 

enter image description here


당신은 할 경우 V7은, 미친 사물을 보는 것처럼, 당신이 한 줄에 모든 것을 할 수있는 ImageMagick이 : ImageMagick이 7, 당신이 할 수에서 마크 Setchell의 좋은 코드를 약간 수정,

magick bean.jpg \ 
    \(+clone -fill black -colorize 100% -fill white -draw "circle %[fx:int(w/2)],%[fx:int(h/2)] %[fx:w>h?int(w/2):0],%[fx:w>h?0:int(h/2)]" -alpha off \) \ 
    -compose copyopacity -composite \ 
    -trim +repage result.png 
+0

좋아 보인다. 하나의 질문입니다. 어떻게 반지름을 지정할 수 있습니까? – wesleywmd

+0

작은 치수에 따라 반지름이 자동으로 선택됩니다. 반경 10을 원하면'pt = "$ cx, $ ((cy + 10))"라고 설정하면됩니다. –

0

다음과 같이 하나의 명령 줄에 =가 자동으로 중심을 찾을 수있을로 번역 반경을 지정 (200)를 얻을 :

,369 : ImageMagick를 6에서, 당신이 중심을 얻기 위해 다른 명령을 필요
magick bean.jpg \ 
\(-clone 0 -fill black -colorize 100 -fill white \ 
-draw "translate %[fx:w/2],%[fx:h/2] circle 0,0 0,200" \) \ 
-alpha off -compose copy_opacity -composite result.png 

1,363,210
declare `convert bean.jpg -format "CX=%[fx:w/2]\nCY=%[fx:h/2]\n" info:` 

convert bean.jpg \ 
\(-clone 0 -fill black -colorize 100 -fill white \ 
-draw "translate $CX,$CY circle 0,0 0,200" \) \ 
-alpha off -compose copy_opacity -composite result.png 

enter image description here

0

이 같은 ImageMagick이 명령은 출력 중심에서 가능한 가장 큰 원이 입력으로 임의의 이미지를 촬영한다. 원은 정사각형 캔버스에 있습니다. 원 밖의 배경은 투명합니다. 이 버전은 6.7.7 이상의 모든 IM 버전에서 작동합니다. 추가

convert input.png -gravity center -background black -bordercolor black \ 
    \(-clone 0 -fill lime -colorize 100 -rotate 90 \) +swap -composite -trim \ 
    \(-clone 0 -fill white -colorize 100 -crop 2x+0+0 -shave 0x2 -border 0x1 \ 
    +repage -distort arc 360 \) -compose copyopacity -composite output.png 

편집 : 이미지의 중심에서 특정 크기의 원을 자르려면 단순히 N이 원하는 작물의 크기입니다 "-extent되는 N × N \"와 그 전 두 번째 줄을 교체합니다. 다음과 같이

0

는 ImageMagick이 7에서는 너비 또는 높이의 최소와 동일한 직경의 원에 작물을 중심으로 수

magick bean.jpg \ 
\(-clone 0 -fill black -colorize 100 -fill white \ 
-draw "translate %[fx:w/2],%[fx:h/2] circle 0,0 0,%[fx:min(w/2,h/2)]" \) \ 
-alpha off -compose copy_opacity -composite -trim result.png 

enter image description here

IM 6에서, 당신이 그것을에 의해 수행 할 수 있습니다

declare `convert bean.jpg -format "CX=%[fx:w/2]\nCY=%[fx:h/2]\nRAD=%[fx:min(w/2,h/2)]\n" info:` 

convert bean.jpg \ 
\(-clone 0 -fill black -colorize 100 -fill white \ 
-draw "translate $CX,$CY circle 0,0 0,$RAD" \) \ 
-alpha off -compose copy_opacity -composite -trim result3.png 

enter image description here

관련 문제