【发布时间】:2014-11-28 02:04:37
【问题描述】:
我有一个适用于 iOS 的应用程序图标,但 Apple 不允许 alpha 出现在图像中。如何删除此 Alpha 通道?我只有 png 图像我没有源文件,因为我的朋友为我做了图像。
【问题讨论】:
-
在图像编辑器中打开 PNG 并在禁用 alpha 通道的情况下重新保存?
我有一个适用于 iOS 的应用程序图标,但 Apple 不允许 alpha 出现在图像中。如何删除此 Alpha 通道?我只有 png 图像我没有源文件,因为我的朋友为我做了图像。
【问题讨论】:
【讨论】:
hasAlpha: yes。另外,iTunes Store 抱怨不需要的 Alpha 通道(“操作失败 – App Store 图标......不能透明,也不能包含 Alpha 通道”)。
convert in.png -alpha off out.png。回覆。预览:在导出对话框中打开/关闭“alpha”会改变预测的文件大小,但保存总是会写入带有 alpha 信息(和相应大小)的文件。
如果您需要从带有图标的目录中删除所有 alpha 通道,请使用以下命令:
for i in `ls *.png`; do convert $i -background black -alpha remove -alpha off $i; done
如果您有 Mac OS Mojave 并且“找不到转换命令”
brew install imagemagick
安装 Homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null
【讨论】:
-alpha remove -alpha off $i;改成-alpha remove -alpha off png24:$i;,它会输出一个24位的png
假设您没有其他图像编辑器,那么您可以在 Mac 上的“预览”中打开它,并使用“导出”选项以不同的格式重新保存它 - 以确保您摆脱 Alpha 通道,它可能是最好导出为 JPG(质量最好),然后打开并再次导出为 PNG。
话虽如此,我怀疑只要没有实际的透明度,您就可以提交带有透明度通道的图标。
【讨论】:
如果您使用的是预览应用程序,则无需在 jpg 和 png 之间导出然后重新导出,只需选择导出,在文件类型 (PNG) 下方您会看到一个 alpha 复选框,取消设置并保存。
【讨论】:
您可以尝试 imagemagick(也可以轻松调整大小以适应不同的尺寸):
convert in.png -background black -alpha remove -alpha off -resize 1024x1024 out.png
【讨论】:
尝试将我的应用上传到 iTunes 应用商店时出现以下错误:
iTunes Store 操作失败
错误 ITMS-90717:“无效的 App Store 图标。‘MyApp.app’资产目录中的 App Store 图标不能是透明的,也不能包含 Alpha 通道。”
我通过在 Finder 中定位资产并查找其信息 (⌘+i) 来确认我的应用商店图标确实包含 alpha 通道。在更多信息下方,它显示:
Alpha 通道:是
找到了上面的解决方案,通过在未选中 Alpha 复选框的情况下导出它来使用预览来删除 alpha 通道,但我想出了一种批量导出它们的方法,因为我需要从 18 个资产中去除 alpha 通道。
我让批量导出工作的方式是在查找器中选择我的所有应用程序图标资产 > 右键单击 > 打开(或打开预览)
所有资产现在都将显示在同一个窗口中。全选 (⌘+a),然后选择文件 > 导出所选图像... > 展开选项 > 取消选中 Alpha 复选框 > 选择(您的目标文件夹)
完成!现在,您的所有图像都已导出,且 Alpha 通道已被剥离。
【讨论】:
从 png 中移除 alpha 通道:
在 Mac 上: 如果您导出或保存图像,预览版 9.0 (macOS Sierra) 可以移除 alpha 通道。
预览版 10.0 (944.2) (macOS High Sierra) 不会移除 Alpha 通道。 导出和/或保存都不会从图像中移除 Alpha 通道。
【讨论】:
好吧,既然您使用的是 Mac,下次您可能只想使用 Automator。将图像转换为 BMP(无损)并返回 PNG。让它保存并瞧瞧......
【讨论】:
我将 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
【讨论】: