Node.js 圆形图像角GM ImageMagic,传递选项
嗨,我想转换一些圆角图像。我在他们的网站上找到了如何使用ImageMagic实现这一点Node.js 圆形图像角GM ImageMagic,传递选项,node.js,imagemagick,rounding,Node.js,Imagemagick,Rounding,嗨,我想转换一些圆角图像。我在他们的网站上找到了如何使用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
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
问题是,我不知道如何将所有这些选项传递给通用汽车。我已经试过了
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支持括号,这似乎是一种非常复杂的处理方式。我想我会制作一个阿尔法遮罩,显示我希望图片不透明/透明的位置,并将其复制到图像中 因此,具体而言:
convert -size 100x100 xc:none -draw "roundrectangle 0,0,99,99,12,12" mask.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
思考组合的参数的方法是首先将input.png堆叠在图像的顶部xc:none(完全遮住它),然后使用mask.png遮罩input.png
的区域,并在下面显示部分xc:none
(有关在不需要创建中间文件的情况下环绕任意大小图像的角的shell脚本,请参阅。)要红色角还是透明角?您希望将圆角应用于所有相同大小的图像是否大致相同?如果是,大小是多少?因此,我尝试将此过程自动化,因此本例中的图像大小为100x100,但在某些点上可能不同。从上面的例子中可以看到,图像已经被调整大小和裁剪,因此在此之后,我希望使用圆角。关于背景,我更喜欢透明,但如果不可能,任何颜色都会更好。ImageMagick的最新版本都支持括号。请看@jondams我指的是GraphicsMagick不支持括号。我不知道GraphicsMagick,但op询问的是ImageMagick,而不是GM。我的观点是,op最初使用括号的解决方案在理论上仍然可行。。。你的答案有点让人困惑,因为你转而谈论通用汽车,它非常相似,但并不完全相同。我不是想说你错了或者没有错(我不是这两种工具的专家)——我只是想为未来的用户澄清一下,他们可能不知道通用汽车和即时通讯的区别。(甚至提醒我自己,因为我发现两者之间的差异也令人困惑。)
gm composite -size 100x100 input.png xc:none mask.png output.png