如何使用 ImageMagick 向我的 PNG 文件添加 Alpha 通道?

How Do I Add An Alpha Channel To My PNG Files Using ImageMagick?

我已经使用其他工具创建了几个 Mac 应用程序,我需要为其创建 Apple 图像。它们被创建为没有 alpha 通道的 PNG 文件,并存储在一个文件夹中。

我试图执行以下命令:

iconutil -c icons myfolder.iconset

我遇到如下多个错误:

iconutil error: Unsuported image format

阅读这篇 blog post 以及 Stack Overflow 上的几篇文章后,我发现我需要在我的图像上设置一个 alpha 通道。 Apple Developer 文档中没有说明这一点。

我尝试为此使用预览,但根据我所做的研究,包括观看几个视频,我必须删除一种颜色,这会弄乱我的图标,尤其是较小的图标。我的图标有一个黑色背景,试图去除它们上面的小白点对于较小的图标来说将是一场噩梦。

David Grayson 在 this link 上发表评论说 ImageMagick 可用于添加 alpha 通道。评论说如果我对每个应该工作的 png 文件执行以下命令。

convert old_icon_16x16.png -define png:color-type=6 icon_16x16.png

然而,当我执行此操作时,出现以下错误:

Abort trap: 6

然后我转到 ImageMagick 主要网站引用的 link 以获取示例。我尝试了以下命令。

convert old_icon_16x16.png -alpha off -alpha on icon_16x16.png

我收到以下错误:

Abort trap: 6

我不知道从这里到哪里去。

如果您得到 AbortSegmentation Faults,这表明您的 ImageMagick 的 compiling/building/linking 不匹配。

我建议您删除所有已安装的 ImageMagick,然后使用 homebrew 重新开始,这是在 OSX 上安装 ImageMagick 的最简单方法。基本上,您转到 Homebrew website 并将单行代码复制并粘贴到终端中进行安装(我不想在此处显示该行,以防它将来发生变化并且已过时)。

一旦你安装了自制软件,这只是一个问题:

brew install imagemagick

如果您想查看支持 X11、TIFF、fftw 等的选项,只需 运行:

brew options imagemagick

输出

--with-fftw
    Compile with FFTW support
--with-fontconfig
    Build with fontconfig support
--with-ghostscript
    Build with ghostscript support
--with-hdri
    Compile with HDRI support
--with-jp2
    Compile with Jpeg2000 support
--with-liblqr
    Build with liblqr support
--with-librsvg
    Build with librsvg support
--with-libwmf
    Build with libwmf support
--with-little-cms
    Build with little-cms support
--with-little-cms2
    Build with little-cms2 support
--with-openexr
    Build with openexr support
--with-openmp
    Compile with OpenMP support
--with-pango
    Build with pango support
--with-perl
    enable build/install of PerlMagick
--with-quantum-depth-16
    Compile with a quantum depth of 16 bit
--with-quantum-depth-32
    Compile with a quantum depth of 32 bit
--with-quantum-depth-8
    Compile with a quantum depth of 8 bit
--with-webp
    Build with webp support
--with-x11
    Build with x11 support
--without-freetype
    Build without freetype support
--without-jpeg
    Build without jpeg support
--without-libpng
    Build without libpng support
--without-libtiff
    Build without libtiff support
--without-magick-plus-plus
    disable build/install of Magick++
--without-opencl
    Disable OpenCL
--HEAD
    Install HEAD version

那么你可以这样做:

brew install imagemagick --with-hdri --with-librsvg

或者,如果您已经安装了 ImageMagick,您可以更改安装的选项:

brew reinstall imagemagick --with-x11 ...

正如 Glenn 在评论中指出的那样,比您正在使用的命令更简单的命令可能是:

convert old_icon_16x16.png png32:icon_16x16.png

另外,请注意 convert 从版本 7 开始变为 magick - 虽然 homebrew 目前仍在提供版本 6。