圆形图像角 GM ImageMagic,传递选项

Round Image corners GM ImageMagic, pass options

您好,我想转换一些带有圆角的图像。我在他们的网站上找到了如何使用 ImageMagic 完成此操作

  convert thumbnail.gif \
    \( +clone -crop 16x16+0+0  -fill white -colorize 100% \
       -draw 'fill black circle 15,15 15,0' \
       -background Red  -alpha shape \
       \( +clone -flip \) \( +clone -flop \) \( +clone -flip \) \
     \) -flatten  rounded_corners_red.png

http://www.imagemagick.org/Usage/thumbnails/#rounded 问题是我不知道如何将所有这些选项传递给 GM。我试过

 gm.in("\( +clone -crop 16x16+0+0  -fill white -colorize 100%
           -draw 'fill black circle 15,15 15,0'
           -background Red  -alpha shape
           \( +clone -flip \) \( +clone -flop \) \( +clone -flip \)
         \) -flatten")

但它不起作用。这就是我调整图片大小的方式

var gm = require("gm").subClass({ imageMagick: true })
var _ = require("lodash")
var images = ['1b.jpg', '2b.jpg', '3b.jpg']

_.forEach(images, function(image, key) {

    var img = gm( __dirname + '/' + image )
    var dest = __dirname + '/' + key+'.jpg'
    img.resize('100', '100', '^')
    img.gravity('Center')
    img.crop('100', '100')

    img.in("\( +clone -crop 16x16+0+0  -fill white -colorize 100%
           -draw 'fill black circle 15,15 15,0'
           -background Red  -alpha shape
           \( +clone -flip \) \( +clone -flop \) \( +clone -flip \)
         \) -flatten")

    img.write( __dirname + '/' + key+'.jpg', function (err) {
     if (!err) console.log(' image done! ');
    })

})

我不相信 GraphicsMagick 支持括号,这似乎是一种非常复杂的处理方式。我想我会制作一个 alpha 蒙版来显示我希望图片所在的位置 opaque/transparent 并将其复制到图像中。

所以,具体来说:

convert -size 100x100 xc:none -draw "roundrectangle 0,0,99,99,12,12" mask.png

convert -size 100x100 gradient:blue-yellow mask.png -compose copyopacity -composite result.png

另外请注意,您将无法在 JPEG 输出文件中存储透明角,因为 JPEG 不支持透明度。

如果你想要红角,你可以这样做:

convert -size 100x100 xc:red -draw "roundrectangle 0,0,99,99,12,12" -transparent black mask.png
convert -size 100x100 gradient:blue-yellow mask.png -composite result.png

假设您的原始图片是一个 100x100 的绿色方块:

gm convert -size 100x100 xc:green input.png

首先,创建蒙版:

gm convert -size 100x100 xc:none -fill black -draw "roundrectangle 0,0,99,99,10,10" mask.png

然后,将蒙版应用于输入图像:

gm composite -size 100x100 input.png xc:none mask.png output.png

考虑 composite 参数的方法是,首先 input.png 堆叠在图像 xc:none 的顶部(完全遮盖它),然后 mask.png 用于遮盖 input.png 的区域,并显示下方 xc:none 的部分区域。

(请参阅 roundrect 了解 shell 脚本,该脚本可以对任意大小的图像进行圆角处理,无需创建中间文件。)