Poi*_*nty 273 png imagemagick alpha-transparency
我有一些透明的PNG图像,我需要创建版本,图像层组成一个白色背景.我已尝试使用Image Magick"转换"操作进行各种操作,但要么根本没有发生任何事情,要么我收到错误.我不想转到中间JPG表单,因为我不想要这些工件.当然,在Gimp或Photoshop或其他任何地方都很容易做到这一点,但我真的宁愿从命令行编写它,因为有很多这样的东西.
非工作Image Magick命令的示例是:
convert img1.png -background white -flatten img1-white.png
Run Code Online (Sandbox Code Playgroud)
这会导致错误.
谢谢!
Rok*_*alj 341
-background white -alpha remove -alpha off
Run Code Online (Sandbox Code Playgroud)
例:
convert image.png -background white -alpha remove -alpha off white.png
Run Code Online (Sandbox Code Playgroud)
随意替换white
您想要的任何其他颜色.Imagemagick文档说明了这个-alpha remove
操作:
此操作简单快速,无需任何额外的内存使用或其他可能与替代透明度删除技术相关的副作用.因此,它是消除图像透明度的首选方式.
rem*_*osu 236
这对我有用:
convert -flatten img1.png img1-white.png
Run Code Online (Sandbox Code Playgroud)
-flatten
命令行选项-layers
命令行选项(-flatten
相当于-layers flatten
)acp*_*ade 44
在ImageMagick中,展平图像和应用背景图像是直截了当的
但是,命令的顺序非常重要
要在透明图像上应用任何背景并将其展平,请首先应用背景而不是展平背景.反过来不起作用.
$ convert sourceimage.png -background BackgroundColor -flatten destinationimage.png
Run Code Online (Sandbox Code Playgroud)
db0*_*db0 23
对我有用的唯一一个是所有答案的混合:
convert in.png -background white -alpha remove -flatten -alpha off out.png
Run Code Online (Sandbox Code Playgroud)
小智 10
使用-flatten让我完全疯了,因为 - 与mogrify作物结合使用并且调整大小根本不起作用.官方和我唯一正确的方法是"删除"alpha通道.
-alpha remove -alpha off(JPG不需要)
请参阅文档:http://www.imagemagick.org/Usage/masking/#remove
ImageMagick使用指南的Alpha删除部分建议使用该选项,例如:-alpha remove
convert in.png -background white -alpha remove out.png
Run Code Online (Sandbox Code Playgroud)
...使用-background
您选择的颜色.
该指南指出:
此操作简单快速,无需任何额外的内存使用或其他可能与替代透明度删除技术相关的副作用.因此,它是消除图像透明度的首选方式.
它另外添加了注释:
请注意,虽然透明度已被"移除",但Alpha通道仍将保持打开状态,但现在将完全不透明.如果您不再需要Alpha通道,则可以使用Alpha Off禁用它.
因此,如果您不需要Alpha通道,可以通过添加-alpha off
选项使输出图像尺寸更小,例如:
convert in.png -background white -alpha remove -alpha off out.png
Run Code Online (Sandbox Code Playgroud)
有关删除透明度从图像部分中描述的其他常用技术的详细信息.
该部分中提到了一个重要的警告,即使用-flatten
作为消除透明度的技术:
然而,这不适用于"mogrify"或一系列多个图像,主要是因为"-flatten"运算符实际上是为了将多个图像合并为单个图像而设计的.
因此,如果您要同时转换多个图像,例如从PDF文件生成缩略图,-flatten
则无法执行您想要的操作(它会将所有页面的所有图像展平为一个图像).另一方面,使用该-alpha remove
技术仍将产生多个图像,每个图像都移除了透明度.
您的命令似乎是正确的,因此问题可能是由于缺少对PNG()的支持.您可以查看convert -list configure
或尝试以下内容:
sudo yum install libpng libpng-devel
Run Code Online (Sandbox Code Playgroud)
这不是你的问题的答案,但我在试图弄清楚如何删除alpha通道时发现了你的问题,所以我决定在这里添加这个答案:
如果要使用imagemagick删除Alpha通道,可以使用以下命令:
mogrify -alpha off ./*.png
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
175031 次 |
最近记录: |