如何使用ImageMagick将透明的PNG图像旋转45度并保持新图像的透明度?

12

我有一个16x16的透明png图片,我已经

convert -rotate -45 a.png b.png

我将其旋转并创建了一个新图像b.png,大小为22x22,当我将其用于背景时,显示原始图像(16x16)与底层背景旋转,但新的填充出现了白色背景。

如何使新填充也透明呢?

如果不可能,那么如何让新图像的整个背景都是同一种颜色?

5个回答

15
使用“-background”选项来指定透明颜色,alpha值设置为零: convert -background 'rgba(0,0,0,0)' -rotate 45 a.png b.png

1
应该是 convert -background 'rgba(0,0,0,0)' -rotate 45 a.png b.png - Crazenezz

9

你也可以使用以下选项:

  -background none

请注意:根据ImageMagick的安装和配置方式,使用-background none'可能会出现错误,例如convert: unable to access configure file colors.xml' @ warning/configure.c/GetConfigureOptions/589.。这是因为ImageMagick找不到配置文件所在的位置。如果遇到这种情况,您可以改用-background 'rgba(0,0,0,0)' - Alan W. Smith

4

我也遇到了同样的问题,但是我使用的命令如下:

convert a.png -rotate 45 -background transparent b.png

需要做的事情:

convert -rotate 45 -background transparent a.png b.png

那么,这确实有点帮助,谢谢 :)

1
convert -rotate 66 -background none c:\input.png c:\output.png

对我来说很有效


0

我使用了C#来进行旋转

using (MagickImage mimg = new MagickImage(path))
{
  mimg.BackgroundColor = MagickColor.Transparent;
  mimg.Alpha(AlphaOption.Background);
  mimg.AlphaColor = new MagickColor(System.Drawing.Color.White);
  mimg.FillColor = new MagickColor(255, 255, 255, 0);
  mimg.Rotate(degree);                    
}

我认为你不需要 Alpha、AlphaColor 和 FillColor 的调用。你只需要确保在旋转之前将 BackgroundColor 设置为透明即可。 - caiosm1005

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接