如何使用 imagemagick 将透明 png 旋转 45 度并保持新图像透明?
Posted
技术标签:
【中文标题】如何使用 imagemagick 将透明 png 旋转 45 度并保持新图像透明?【英文标题】:How can I rotate a transparent png by 45 degrees using imagemagick and keep the new image transparent? 【发布时间】:2011-05-06 11:44:58 【问题描述】:我有一个 16x16 透明 png,我做到了
convert -rotate -45 a.png b.png
这旋转了它并创建了一个大小为 22x22 的新图像 b.png,当我在背景上使用它时,显示原始图像 (16x16) 与底层背景一起旋转,但出现的新填充显示为白色背景。
新的填充物怎么可能也是透明的?
如果这是不可能的,那么我怎样才能让新图像的所有背景都是一种颜色?
【问题讨论】:
【参考方案1】:使用 -background 选项指定透明色,并将 alpha 设置为零:
convert -background 'rgba(0,0,0,0)' -rotate 45 a.png b.png
【讨论】:
应该是convert -background 'rgba(0,0,0,0)' -rotate 45 a.png b.png
【参考方案2】:
您还可以使用以下选项:
-background none
【讨论】:
仅供参考:取决于 ImageMagick 的安装方式和配置,-background none' might result in an error like
convert:无法访问配置文件colors.xml' @ warning/configure.c/GetConfigureOptions/589.
。当 ImageMagick 由于安装位置而找不到配置文件时,就会发生这种情况。如果遇到这种情况,可以改用-background 'rgba(0,0,0,0)'
。【参考方案3】:
我也遇到了同样的问题,但是我使用的是这样的命令:
convert a.png -rotate 45 -background transparent b.png
必须是:
convert -rotate 45 -background transparent a.png b.png
所以,这实际上有点帮助,谢谢:)
【讨论】:
【参考方案4】:convert -rotate 66 -background none c:\input.png c:\output.png
很适合我
【讨论】:
【参考方案5】:我用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 设置为透明 before 旋转。以上是关于如何使用 imagemagick 将透明 png 旋转 45 度并保持新图像透明?的主要内容,如果未能解决你的问题,请参考以下文章
使用 ImageMagick/convert 创建半透明 PNG
使用imagemagick将EPS转换为PNG时如何添加填充?
ImageMagick - 设置透明带 AlphaChannel 的 png 图片的透明度