2016-02-09 163 views
1

trim配有使用ImageMagick的圖像:如何使用虛擬畫布裁剪(修剪結果)?

step2.png[0] PNG 1200x1200=>264x468 1200x1200+381+273 8-bit sRGB 0.031u 0:00.014 
step3.png[0] PNG 264x468 1200x1200+381+273 8-bit sRGB 31.8KB 0.000u 0:00.000 

現在,我想使用的裝飾(一個264x468像素面積開始381273)發現,該地區的作物另一個圖像(前體step2.png )。我該如何以編程方式執行此操作,即不需要從-identify輸出複製粘貼381,273等?

我的想法是製作step3.png的alpha蒙版,並將其與原始圖像合成,但我無法弄清楚。

回答

2

更新回答

經過思考,我想你也許這個意思,在這裏other.png被修剪,以匹配trimmed_orig.png

composite -compose src other.png trimmed_orig.png trimmed_other.png 

其中影象是這樣的:

identify other.png trimmed_orig.png trimmed_other.png 

other.png PNG 560x360 560x360+0+0 8-bit sRGB 2c 312B 0.000u 0:00.000 
trimmed_orig.png PNG 400x200 560x360+80+80 8-bit sRGB 2c 340B 0.000u 0:00.000 
trimmed_other.png PNG 400x200 560x360+80+80 8-bit sRGB 2c 340B 0.000u 0:00.000 

原創回答

不確定您是指以下內容還是明確不包含以下內容,但讓我們試試看。

假設你開始了與此圖像:

enter image description here

,並要剪掉紅色,並找到內,藍色區域是。你可以這樣做:

convert image.png -trim trimmed.png 

並且您將從左上角獲得一個藍色的400x200圖像偏移80,80。不是,雖然這樣做,你可以要求ImageMagick的告訴你它會修剪沒有這樣做,使用-format %@這樣的:

convert image.png -format "%@" info: 
400x200+80+80 

所以,你會再捕捉,像這樣:

trim=$(convert image.png -format"%@" info:) 

現在,如果你有這樣的圖像:

enter image description here

您可以使用相同的區域修剪它作爲你的意思是從原稿修剪這樣伊納勒圖片:

convert other.png -crop $trim cropped.png 

enter image description here

0

使用ImageMagick 7+,您可以用FX表達式通過隱藏一個圖像的大小,並使用它作爲另一個實際尺寸做到這一點很容易地:

magick \(\ 
    step3.png -set option:trimzone "%[fx:w]x%[fx:h]+%[fx:page.x]+%[fx:page.y]" +delete \ 
    \) other_image.png -crop %[trimzone] output.png 

老實說,你可能會消除大多數或所有的中間「步驟x」文件,但沒有關於你的過程的更多細節,很難說如何。