【问题标题】:How to make circle thumbnail with GraphicsMagick?如何使用 GraphicsMagick 制作圆形缩略图?
【发布时间】:2015-08-28 15:07:25
【问题描述】:

在探索如何使用 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 的 200x200 临时文件
  2. 创建中间有白色圆圈的透明 tmp.png
  3. tmp.png 和 kira_new.jpg 上的组成

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

【问题讨论】:

    标签: imagemagick jpeg image-manipulation graphicsmagick


    【解决方案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
    

    现在,我们克隆正方形(这比获取它的大小和添加尺寸更容易),然后打开它的透明度。然后画一个圆圈,用默认的填充颜色填充——只要它是不透明的就没有关系。然后我们告诉 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 ...
    

    【讨论】:

      猜你喜欢
      • 2012-04-07
      • 2010-10-27
      • 2012-03-06
      • 1970-01-01
      • 2020-06-12
      • 1970-01-01
      • 2013-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多