我正在尝试为边框添加框架/边框" color"来自一个文件。 该文件可在此处找到https://storage.googleapis.com/ramki-opticlan/paspartu_small.jpg
我认为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
我的问题是我无法计算背景的尺寸并正确调整图像位置而不会破坏图像宽高比。 如果有人可以帮我创建一个脚本来计算这些位置,我将非常感激。
让我们以此为例:
希望,我想要实现的目标是可以理解的。 干杯
我正在使用IM7
答案 0 :(得分: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
所以,如果我从这开始:
我最终得到了这个: