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

Imagemagick 如何使用GraphicsMagick制作圆形缩略图?,imagemagick,jpeg,image-manipulation,graphicsmagick,Imagemagick,Jpeg,Image Manipulation,Graphicsmagick,在探索如何使用GraphicsMagick制作圆形裁剪时,我想到了以下代码: gm convert-缩略图200x200^-范围200x200 kira.jpg kira_new.jpg和gm convert-大小200x200 xc:none-填充白色-绘制“圆圈100100 110,0”tmp.png和gm composite-合成copycopacity tmp.png kira_new.jpg out.png 它的作用如下: 创建名为kira_new.jpg的200x200临时文件 创

在探索如何使用GraphicsMagick制作圆形裁剪时,我想到了以下代码:

gm convert-缩略图200x200^-范围200x200 kira.jpg kira_new.jpg和gm convert-大小200x200 xc:none-填充白色-绘制“圆圈100100 110,0”tmp.png和gm composite-合成copycopacity tmp.png kira_new.jpg out.png

它的作用如下:

  • 创建名为kira_new.jpg的200x200临时文件
  • 创建中间有白色圆圈的透明tmp.png
  • tmp.png和kira_new.jpg上的合成

  • 所以问题是:有没有办法让它变得更短,而不是运行3个命令?

    更新的答案

    在对GraphicsMagick进行了大量试验后,与ImageMagick相比,GraphicsMagick缺乏功能和灵活性,令人失望(
    -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”:

    现在,我们克隆正方形(这比获取其大小和添加尺寸更容易),然后打开其透明度。然后画一个圆圈,用默认的填充颜色填充——只要它是不透明的,就无所谓了。然后我们告诉ImageMagick,在下一步合成时,它应该复制不透明度通道,然后保存为
    PNG

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

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

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