如何使用GraphicsMagick制作圆形缩略图?

时间:2015-08-28 15:07:26

标签: imagemagick jpeg image-manipulation graphicsmagick

在探索如何使用GraphicsMagick制作圆形裁剪时,我来到了那段代码:

gm convert -thumbnail 200x200^ -extent 200x200 kira.jpg kira_new.jpg && gm convert -size 200x200 xc:none -fill white -draw "circle 100,100 110,0" tmp.png && gm composite -compose CopyOpacity tmp.png kira_new.jpg out.png

以下是它的作用:

  1. 创建名为kira_new.jpg
  2. 的200x200临时文件
  3. 在中间创建带有白色圆圈的透明tmp.png
  4. tmp.png和kira_new.jpg上的作文
  5. 所以问题是:有没有办法让它更短而不是运行3个命令?

1 个答案:

答案 0 :(得分:1)

更新了答案

很多尝试使用GraphicsMagick之后,与ImageMagick相比缺乏功能和灵活性感到失望(-clone你在哪里?-swap你在哪里?一边处理你在哪里?-alpha你在哪里?),最近我可以得到一个没有中间文件的GraphicsMagick命令:

{
   echo convert -size 400x400 xc:none -fill white -draw \"circle 100,100 200,100\" mpr:mask
   echo convert image.jpg -resize 400x400 mpr:image
   echo composite -compose copyopacity mpr:mask mpr:image result.png
} | gm batch -prompt off

原始答案

不确定如何使用GraphicsMagick,但是当你使用ImageMagick进行标记时,我会根据它给出一个解决方案:

让我们从红色方块开始,因为我没有“kira”

convert -size 400x400 xc:red image.jpg

enter image description here

现在,我们克隆正方形(比获取尺寸和添加尺寸更容易),然后打开它的透明度。然后绘制一个圆圈,填充任何默认的填充颜色 - 只要它是不透明的就没关系了。然后我们告诉ImageMagick它应该在我们在下一步中合成之前复制不透明度通道,然后保存为PNG

convert image.jpg  \( +clone -alpha transparent -draw "circle 100,100 200,100" \) -compose copyopacity -composite result.png

enter image description here

如果你想调整大小,请在我添加点的区域进行:

convert image.jpg -resize ... -extent ... \( +clone -alpha ...