2017-09-05 80 views
0

我想幀/邊框圖片的邊框「顏色」來自文件。 該文件可以在這裏找到https://storage.googleapis.com/ramki-opticlan/paspartu_small.jpgImageMagick使用邊框顏色從一個文件框架圖片

我認爲imagemagick不能這樣做,所以我的想法是創建一個所需的大小的新背景,並將圖像放在它的頂部。

#creates the background 
convert -size ${PICTURE_WIDTH}x${PICTURE_HEIGHT} tile:paspartu_small.jpg background.jpg 

# places one on top of each other 
convert background.jpg picture_that_needs_to_be_framed.jpg -gravity center -region +0-0 -composite -matte result.jpg 

我的問題是,我不能計算該背景的尺寸,並正確調整圖像位置,而不會破壞圖像寬高比。 如果有人能幫我創建一個腳本來計算這些職位,我將非常感激。

讓我們這種情況下,例如:

  • 我的照片是600x500px
  • 上邊框必須是40像素
  • 右邊框必須是50像素
  • 下邊框必須是60像素
  • 左邊界必須是50px

希望它'我可以理解我想要完成什麼。 乾杯

我使用IM7

+0

它始終是一個好主意,包括您的IM版本和編程laungage作爲可以對答案的效果。什麼是地區+ 0-0應該做的?有了V7,你可以在一行中做所有事情;而V6則需要兩三行。 – Bonzo

+0

我編輯我的帖子,謝謝。很抱歉,延遲 – Izopi4a

回答

2

如果您有ImageMagick的V7 +,你可以這樣做:

#!/bin/bash 
TOP=40 
RIGHT=50 
BOTTOM=60 
LEFT=50 
PICTURE="artwork.jpg" 
BACKGROUND="background.jpg" 

magick "$PICTURE" \ 
     -size "%[fx:w+${LEFT}+${RIGHT}]"x"%[fx:h+${TOP}+${BOTTOM}]" tile:"$BACKGROUND" \ 
     +swap -geometry +${LEFT}+${TOP} -composite result.jpg 

如果您有ImageMagick的V6發動機,這應該做你想要什麼,是相當容易定製:

#!/bin/bash 
TOP=40 
RIGHT=50 
BOTTOM=60 
LEFT=50 
PICTURE="artwork.jpg" 
BACKGROUND="background.jpg" 

# Get width and height of picture 
read w h < <(convert "$PICTURE" -format "%w %h" info:) 

((NEW_W=w+LEFT+RIGHT)) 
((NEW_H=h+TOP+BOTTOM)) 

convert -size ${NEW_W}x${NEW_H} tile:"$BACKGROUND" \ 
     "$PICTURE" -geometry +${LEFT}+${TOP} -composite result.jpg 

所以,如果我從這開始:

enter image description here

我結束了這一點:

enter image description here

+0

哦,我的主......這太神奇了。非常感謝您的幫助,我永遠無法自己做到這一點。你搖滾! – Izopi4a

+0

高興 - 你的項目祝你好運! –

+0

通過添加任意邊框尺寸,可能無法保持輸出寬高比等於輸入寬高比。馬克Setchell已經顯示下面的命令來添加你想要的大小的邊界。輸入是600x500或1.2的w/h方面。但產量是700x600或w/h方面的1.167。因此,無論您需要接受高寬比的差異,還是需要添加不同的邊框大小以實現相同的高寬比,或者您必須調整結果圖像的大小以使其變形以保持所需的寬高比。 – fmw42