删除图像中的 alpha 通道

我有一个 iOS 的应用程序图标,但苹果不允许阿尔法在图像中。如何删除这个阿尔法通道?我只有我的 png 图像,我没有源文件,因为我的朋友为我做的图像。

128822 次浏览

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

话虽如此,我怀疑你可以提交一个带有透明通道的图标,只要没有实际的透明度。

如果你使用的是预览应用程序,不需要导出然后在 jpg 和 PNG 之间重新导出,只需选择导出,在文件类型(PNG)下面你会看到一个 alpha 复选框,取消设置并保存。

你可以试试 image magick (也可以轻松调整不同大小) :

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

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

enter image description here

接受的答案是导出到 JPG,然后回到 PNG 是不推荐的。

  • 这是过程中的一个额外步骤(2个导出)
  • JPG 是有损耗的,因此您将丢失一些图像数据

这里有一个超级快速和简单的方法来做到这一点,没有额外的导出或节省(损失) JPG:

使用预览应用程序(Mac) :

  1. 打开 图像
  2. Command-Shift-S to Duplicate (创建一个副本)
  3. 命令-S 保存
  4. 取消选中“ Alpha” 复选框
  5. 从文件名 中删除“ copy”(包括空格)
    • 这将覆盖您的原件,如果您想保留原件,只需在名称中留下“复制”即可
  6. 保存
  7. 单击“替换” 以确认要覆盖原始文件
    • 只有当你覆盖你的原件时才有必要 remove alpha channel

既然你用的是 Mac 下次你可能只想用 Automator。转换图像到 BMP (无损)和回到 PNG。让它保存,瞧..。

试图将我的应用程序上传到 iTunes 应用程序商店时,出现了以下错误:

ITunes 商店运营失败

错误条目 -90717: “应用程序商店图标无效。‘ MyApp.App’资产目录中的 App Store 图标既不透明,也不包含 alpha 通道。”

我确认了我的应用程序商店图标确实包含了 alpha 通道,通过在 Finder 中定位资产并查找它的信息(something + i)。更多信息下面显示:

阿尔法频道: 是的

找到了上面的解决方案,使用预览删除 Alpha 通道,方法是在没有选中 Alpha 复选框的情况下导出它,但是找到了一种批量导出的方法,因为我需要从18个资产中删除 Alpha 通道。

我让批导出工作的方法是在 finder > right click > open (或者用预览打开)中选择所有我的应用程序图标资产

所有资产现在都将出现在同一个窗口中。选择所有(something + a) ,然后选择 File > Export Selected Images... > Expand Options > uncheck the Alpha 复选框 > Select (your target File)

完成! 你所有的图像现在被导出与阿尔法通道剥离。

从 png 中移除 alpha 通道:

在 Mac 上: 预览版9.0(macOS Sierra)可以删除导出或保存映像时的 alpha 通道。

预览版本10.0(944.2)(macOS High Sierra)不删除 alpha 通道。 Export 和/或 Save 都不会从映像中删除 alpha 通道。

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

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

如果你使用的是 Mac OS Mojave 并且“未找到转换命令”

brew install imagemagick

安装自制软件

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

我把 Nikita Pushkar 的非常好的解决方案放到一个 shell 脚本中,这个脚本可以转换所有在 res/icon/ios中找到的 iOS 图标:

如果没有的话,它使用 brew 来安装 Imagemagick,所以我猜它只能在 Mac 上运行。

#! /usr/bin/env bash
#
# remove alpha channel from PNG images when App Store upload fails
#
# taken from https://stackoverflow.com/a/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