如何使用 GraphicsMagick 制作圆形缩略图?
How to make circle thumbnail with 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
这是它的作用:
- 创建名为 kira_new.jpg
的 200x200 临时文件
- 创建透明 tmp.png,中间有白色圆圈
- 在 tmp.png 和 kira_new.jpg
上的合成
所以问题是:有没有办法让它更短而不是 运行 3 个命令?
更新答案
在使用 GraphicsMagick 多次 试验之后,对其与 ImageMagick 相比缺乏功能和灵活性感到失望(-clone
你在哪里?-swap
you? aside-processing where are you? -alpha
where are you?), 我能得到的没有中间文件的最接近单个 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 ...
在探索如何使用 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
这是它的作用:
- 创建名为 kira_new.jpg 的 200x200 临时文件
- 创建透明 tmp.png,中间有白色圆圈
- 在 tmp.png 和 kira_new.jpg 上的合成
所以问题是:有没有办法让它更短而不是 运行 3 个命令?
更新答案
在使用 GraphicsMagick 多次 试验之后,对其与 ImageMagick 相比缺乏功能和灵活性感到失望(-clone
你在哪里?-swap
you? aside-processing where are you? -alpha
where are you?), 我能得到的没有中间文件的最接近单个 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 ...