去除图像中的Alpha通道

165

我有一个用于iOS的应用程序图标,但苹果不允许图像中存在alpha通道。如何去除这个alpha通道?我只有PNG图像,并没有源文件,因为我的朋友替我制作了这个图像。


7
在图像编辑器中打开PNG文件,并将alpha通道禁用后重新保存? - Alexander O'Mara
11个回答

379

不建议将文件导出为JPG格式,再重新导出为PNG格式。

  • 这是一个多余的步骤(需要2次导出)
  • JPG是有损压缩的,因此您将丢失部分图像数据。

以下是一种超级快速且简单的方法,可以在不进行额外导出或保存为(有损)JPG的情况下完成此操作:

使用Preview应用程序(Mac):

  1. 打开该图像
  2. Command-Shift-S 复制(创建副本)
  3. Command-S 保存
  4. 取消选择 " Alpha " 复选框
  5. 从文件名中删除 " copy " (包括空格)
    • 如果要保留原始文件,请将 "copy" 保留在名称中,这样会创建一个新文件.
  6. 保存
  7. 点击“替换”确认您要覆盖原始文件
    • 仅在您要覆盖原始文件时才需要执行此步骤 remove alpha channel

2
在我看来,这是一个更好的答案。JPG不支持Alpha通道,这将允许您使用无损格式并处理Alpha通道(而不是避免它)。 - Cody-PHP-jQuery
4
我不明白为什么iTunes Store团队在手表应用程序图标中显示这个错误(Alpha通道),而在之前的版本中他们认为它们是正确的。浪费时间!谢谢Apple公司! - Markus
15
在macOS High Sierra中,预览似乎总是带有alpha通道保存PNG文件,即使复选框未被选中。如果我打开保存的文件,信息框总是显示“Has Alpha: 1”。sips工具也告诉我hasAlpha:yes。此外,iTunes Store抱怨不想要的alpha通道(“操作失败-应用商店图标...不能透明,也不能包含alpha通道”)。 - Stefan
3
如@Psychomentally提到,ImageMagick最终对我起作用了:“convert in.png -alpha off out.png”。关于预览:在导出对话框中切换“alpha”的开/关会改变预测文件大小,但保存总是带有alpha信息(和相应的大小)。 - Stefan
1
在我的 macOS Ventura 上运行良好。 - Lawrence Gimenez
显示剩余5条评论

92

如果您需要从带有图标的目录中删除所有alpha通道,请使用以下命令:

for i in `ls *.png`; do convert $i -background black -alpha remove -alpha off $i; done

如果您使用的是Mac OS Mojave,并且遇到了“convert command not found”错误

brew install imagemagick

安装Homebrew

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null

2
这会生成8位输出图像而不是24位。 - Stepan Yakovenko
4
如果你将“-alpha remove -alpha off $i;”改为“-alpha remove -alpha off png24:$i;”,它将输出一个24位的png文件。 - Lawrence Ryerson Davis IV
你的建议破坏了Xcode,现在我无法运行我的命令行脚本来构建所有目标,因为这个安装覆盖了一些内容。ImageMagick的安装花费了很长时间,并安装了大量的东西,现在我必须将它们全部卸载。你能给我展示一些命令行,让我可以删除我刚刚安装的所有内容吗? - David Rector
我喜欢命令行选项。但是,ls *.png 看起来不够健壮,如果文件名包含空格,则会出现意外情况。使用 for i in *.png 是否更好呢?出于同样的原因,您还应该在 convert 命令中双引号引用 "$i" 的两个实例。 - mwfearnley

60

假设您没有其他图像编辑器,那么您可以在Mac上的预览中打开它,并使用导出选项将其重新保存为不同的格式- 为了确保摆脱 Alpha 通道,最好将其导出为 JPG(最佳质量),然后再次打开并将其导出为 PNG。

话虽如此,我怀疑只要没有实际透明度,提交具有透明通道的图标可能是可以的。


13
这将导致少量的质量损失,并且PNG格式不适合压缩生成JPG文件时出现的这种伪影,因此PNG文件会更大。此外,即使没有实际透明度,在图片中使用alpha通道的PNG格式也可能被苹果公司拒绝。 - philwilks
我在旧版的macOS Sierra上尝试了一下,它可以工作。 - Bhaumik Desai
19
导出 PNG 时,您实际上可以直接取消选中“Alpha”复选框,无需先导出为 JPG。 - Petr Peller
如何对图像数据进行操作以将图像通道从4个减少到3个? - WW00WW
8
任何带有透明通道的PNG图像都将被拒绝,无论图像中是否显示透明。 - gannonbarnett

39
如果您正在使用预览应用程序,则无需在jpg和png之间导出,然后重新导出,只需选择导出并在文件类型(PNG)下方勾选取消α通道复选框,并保存。

6
我曾经使用这个方法,但在MacOS High Sierra上,除非选择输出为JPG,否则在Preview中取消勾选Alpha并没有任何效果。如果我尝试打开一个PNG文件,导出不带Alpha通道的PNG文件并打开新的PNG文件,它仍然具有Alpha通道。 - Dan Loughney
2
在我的 High Sierra (10.13.4) 上运行良好。 - heyfrank

16

不需要先将图像导出为jpg格式。您可以取消alpha通道的复选框,直接从预览应用程序将png导出为没有alpha通道的png。

输入图像描述


15

你可以尝试使用ImageMagick(也可以轻松调整大小以适应不同的大小):

convert in.png -background black -alpha remove -alpha off -resize 1024x1024 out.png

我该如何在CMD Bash中选择PNG文件? - Marlhex
Marlhex的MacBook Pro:Edgar marlhex $ ls 午餐屏幕.jpg 新图标-5.png 午餐屏幕.png 新图标-51024 copy.jpg 新图标-5.jpg 新图标-51024.png Marlhex的MacBook Pro:Edgar marlhex $ nuevo icon-51024.png -bash:nuevo:找不到命令 - Marlhex

10

在将我的应用程序上传到iTunes应用商店时,遇到了以下错误:

iTunes Store操作失败

ERROR ITMS-90717:“无效的App Store图标。我的应用程序中的资源目录中的App Store图标不能是透明的,也不能包含Alpha通道。”

我确认我的应用商店图标确实包含了Alpha通道,通过定位Finder中的资源文件并查看其信息(⌘+i),在更多信息下面显示:

Alpha通道:是

我发现上述解决方案可以使用“预览”来取消Alpha通道,方法是导出时取消复选框,但考虑到我需要从18个资源文件中删除Alpha通道,因此想出一种批量导出它们的方法。

我让批量导出工作正常的方法是在Finder中选择所有应用程序图标资源文件 > 右键单击 > 打开(或使用预览打开)

现在所有资源文件将出现在同一个窗口中。选择所有资源文件(⌘+a),然后选择文件 > 导出所选图片... > 展开选项 > 取消选中Alpha复选框 > 选择(您的目标文件夹)

完成!现在你所有的图片都已经导出并且已经取消了Alpha通道。


1
我尝试了相同的操作,但在High Sierra上不再起作用。Alpha通道在预览中无法删除。 - Satheesh
1
这在我使用 macOS Catalina 上的 Preview 11.0 时非常有效。 - brians
1
MacOS Big Sur上没有alpha复选框 :( - Kilizo

8

如何从PNG文件中移除alpha通道:

在Mac上: 如果您使用的是macOS Sierra版本的Preview 9.0,则可以在导出或保存图像的同时移除alpha通道。

但是,在macOS High Sierra版本的Preview 10.0(944.2)上,无论是导出还是保存都不能移除alpha通道。


3
这突显了苹果公司最近的两个令人崩溃的问题…… High Sierra忽略保存选项和许多人都在这里的原因,即Xcode突然无法上传应用程序,因为图标透明度的问题。 - MobileVet

4
我将Nikita Pushkar非常好的解决方案放入了一个Shell脚本中,用于转换在res/icon/ios中找到的所有iOS图标:

如果没有安装imagemagick,它将使用brew进行安装,因此我猜它只能在Mac上运行。

#! /usr/bin/env bash
#
# remove alpha channel from PNG images when App Store upload fails
#
# taken from https://dev59.com/N18e5IYBdhLWcg3wCGu_#52962485 - @Nikita Pushkar
#
# make sure to have brew installed, see https://brew.sh:
#   /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
#
# make sure to have imagemagick installed, see https://imagemagick.org:
#   brew install imagemagick
#

if command -v convert; then
    echo "imagemagick seems to be installed"
else
    echo "imagemagick not installed, trying to install ..."
    if command -v brew; then
        echo "brew is installed, using it"
    else
        echo "brew not installed, trying to install ..."
        /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    fi

    brew install imagemagick
fi

for i in `ls res/icon/ios/*.png`;
do
    echo "convert $i"
    convert $i -background white -alpha remove -alpha off $i;
done

3

好的,既然您使用的是Mac电脑,下次您可以使用Automator。将图片转换成BMP(无损)格式,再转回PNG格式。让它保存,就大功告成了...


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