У меня есть значок приложения для iOS, но Apple не позволяет использовать альфа-канал в изображении. Как удалить этот альфа-канал? У меня есть только изображение png. У меня нет исходного файла, так как мой друг сделал изображение для меня.
У меня есть значок приложения для iOS, но Apple не позволяет использовать альфа-канал в изображении. Как удалить этот альфа-канал? У меня есть только изображение png. У меня нет исходного файла, так как мой друг сделал изображение для меня.
Ответы:
Предполагая, что у вас нет другого редактора изображений, вы можете открыть его в режиме предварительного просмотра на своем Mac и использовать параметр «Экспорт», чтобы повторно сохранить его в другом формате - чтобы избавиться от альфа-канала, лучше всего экспортировать в JPG (наилучшего качества), затем откройте его и снова экспортируйте как PNG.
Сказав это, я подозреваю, что вы, вероятно, в порядке, отправляя значок с каналом прозрачности, если нет фактической прозрачности.
Принятый ответ на экспорт в JPG, затем обратно в PNG не рекомендуется.
Вот супербыстрый и простой способ сделать это без дополнительного экспорта или сохранения в (с потерями) JPG:
Использование приложения предварительного просмотра (Mac):
hasAlpha: yes
. Кроме того, iTunes Store жалуется на нежелательный альфа-канал («Операция не удалась - значок App Store… не может быть прозрачным или содержать альфа-канал»).
convert in.png -alpha off out.png
. Re. Предварительный просмотр: включение / выключение «альфа» в диалоговом окне экспорта изменяет прогнозируемый размер файла, но при сохранении файл всегда записывается с альфа-информацией (и соответствующим размером).
если вам нужно удалить весь альфа-канал из каталога с иконками, используйте эту команду:
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;
ней будет выводить 24bit PNG
Если вы используете приложение Preview, нет необходимости экспортировать, а затем повторно экспортировать между jpg и png, просто выберите экспорт и под типом файла (PNG) вы увидите флажок альфа, снимите его и сохраните.
Вы можете попробовать imagemagick (также легко изменить размер для разных размеров):
convert in.png -background black -alpha remove -alpha off -resize 1024x1024 out.png
Только что получил следующую ошибку при попытке загрузить мое приложение в магазин приложений iTunes:
Не удалось выполнить операции iTunes Store
ОШИБКА ITMS-90717: «Недопустимый значок магазина приложений. Значок магазина приложений в каталоге ресурсов в« MyApp.app »не может быть прозрачным или содержать альфа-канал».
Я подтвердил, что значки в моем магазине приложений включают альфа-канал, найдя ресурс в Finder и просмотрев его информацию (⌘ + i). Под дополнительной информацией было показано:
Альфа-канал: Да
Нашел вышеупомянутое решение, чтобы использовать предварительный просмотр для удаления альфа-канала, экспортировав его с снятым флажком «Альфа», но нашел способ их пакетного экспорта, поскольку у меня было 18 ресурсов, из которых мне нужно было удалить альфа-канал.
Способ, которым я получил пакетный экспорт для работы, заключался в том, чтобы выбрать все мои активы значков приложения в Finder> щелкните правой кнопкой мыши> открыть (или открыть с предварительным просмотром)
Все активы теперь появятся в одном окне. Выделите все (⌘ + a), а затем выберите «Файл»> «Экспортировать выбранные изображения…»> «Разверните параметры»> снимите флажок «Альфа»> «Выбрать» (ваша папка назначения).
Готово! Все ваши изображения теперь экспортируются без альфа-канала.
Чтобы удалить альфа-канал из png:
на Mac: предварительная версия 9.0 (macOS Sierra) может удалить альфа-канал при экспорте или сохранении изображения.
Предварительная версия 10.0 (944.2) (macOS High Sierra) не удаляет альфа-канал. И Экспорт, и / или Сохранить не удаляют альфа-канал из изображения.
Столкнувшись с той же проблемой в контексте приложений Flutter, я выделил для этой задачи простой веб-сайт, на котором вы можете удалить альфа-каналы изображений:
Обычно я запускаю ImageMagick с помощью веб-сборки прямо в браузере, поэтому ни одно из ваших изображений не загружается, и вам не нужны другие инструменты, такие как Gimp.
Я поместил очень хорошее решение Никиты Пушкаря в сценарий оболочки, который конвертирует все значки iOS, найденные в res/icon/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
У меня была такая же проблема, но другие ответы у меня сейчас не работали (возможно, это ошибка Apple). Я понял, что вы можете использовать этот веб-сайт, чтобы удалить альфа-канал из изображения.