请帮我写ImageMagick的命令。我需要生成一个边框,同时只有这个边框的顶部。这是algoritm:
答案 0 :(得分:1)
我发现你的问题很难理解,但我知道你基本上想要从它的一面的图片制作整个相框 - 即框架成型的图片。
我意识到它有点晚了,但是有点挑战,所以这里有一个bash脚本,它将顶部成型的图片作为参数并从中制作一个框架...
#!/bin/bash
################################################################################
# pictureframe
# Mark Setchell
#
# Make a picture frame from a single horizontal moulding picture - with mitred
# corners and a transparent middle for a photo!
################################################################################
# Set DEBUG=1 for debugging info
DEBUG=1
# Image of the moulding is the 1st parameter, use "moulding.jpg" if none given
moulding=${1:-moulding.jpg}
[ $DEBUG -gt 0 ] && echo "DEBUG: Using file: $moulding"
# Get width and height of image
read w h < <(convert "$moulding" -format "%w %h" info: )
[ $DEBUG -gt 0 ] && echo "DEBUG: Dimensions: ${w}x${h}"
# Determine corner points of mitring mask - it looks like this
#
# ----------------------------
# \ /
# ----------------------
#
polyline=$(convert "$moulding" -format "0,0 %w,0 %[fx:w-h],%h %h,%h" info:)
[ $DEBUG -gt 0 ] && echo "DEBUG: Mitring mask: $polyline"
# Mitre corners
dbg=""
[ $DEBUG -gt 0 ] && dbg="-write mask.png" && echo "DEBUG: Mask is in file mask.png"
convert "$moulding" \( +clone -evaluate set 0 -fill white -draw "polyline $polyline" -alpha off $dbg \) -compose copyopacity -composite top.png
# Build whole frame by rotating top through the angles and compositing onto extended blank canvas
convert top.png -background none -extent x${w} \
\( top.png -rotate 90 \) -gravity east -composite \
\( top.png -rotate 180 \) -gravity south -composite \
\( top.png -rotate 270 \) -gravity west -composite -flatten result.png
[ $DEBUG -gt 0 ] && echo "DEBUG: Output file is: result.png"
所以,如果我从这个成型开始,
它会产生这个:
如果我从这开始
它会产生这个:
请注意,此脚本可能无法与专业图片处理器做出相同的审美决定: - )
但话又说回来,它永远不会削减一个非常合适的斜角: - )