Удалить альфа-канал в изображении

103

У меня есть значок приложения для iOS, но Apple не позволяет использовать альфа-канал в изображении. Как удалить этот альфа-канал? У меня есть только изображение png. У меня нет исходного файла, так как мой друг сделал изображение для меня.

zbz.lvlv
источник
5
Открыть PNG в редакторе изображений и повторно сохранить с отключенным альфа-каналом?
Александр О'Мара
1
Принятый ответ теряет данные изображения и содержит лишний ненужный шаг. Вместо этого см. Решение ниже: stackoverflow.com/a/38256612/5764320
Mycah
Я также сделал небольшой инструмент, в котором вы можете просто перетащить изображения и удалить альфа-канал без потери данных изображения: removealphachannel.com
Али Насерзаде,

Ответы:

48

Предполагая, что у вас нет другого редактора изображений, вы можете открыть его в режиме предварительного просмотра на своем Mac и использовать параметр «Экспорт», чтобы повторно сохранить его в другом формате - чтобы избавиться от альфа-канала, лучше всего экспортировать в JPG (наилучшего качества), затем откройте его и снова экспортируйте как PNG.

Сказав это, я подозреваю, что вы, вероятно, в порядке, отправляя значок с каналом прозрачности, если нет фактической прозрачности.

Даниэлькуокка
источник
9
Это приведет к небольшой потере качества, а также к увеличению размера файла PNG, поскольку формат PNG не подходит для сжатия артефактов, которые вы получаете при создании файла JPG. Кроме того, Apple отклоняет изображения PNG с альфа-каналами, даже если нет фактической прозрачности.
philwilks
Я попробовал более старую версию macOS Sierra, и она сработала.
Бхаумик Десаи
10
Фактически вы можете просто снять флажок «Альфа» при экспорте в PNG. Нет необходимости предварительно экспортировать в JPG.
Петр Пеллер
Как выполнить операцию с данными изображения, чтобы уменьшить количество каналов изображения с 4 до 3?
voldikss
5
Любые PNG с каналом прозрачности не принимаются, независимо от того, отображается ли прозрачность на изображении или нет.
gbarnett 08
240

Принятый ответ на экспорт в JPG, затем обратно в PNG не рекомендуется.

  • Это дополнительный шаг в процессе (2 экспорта)
  • JPG с потерями, поэтому вы потеряете некоторые данные изображения

Вот супербыстрый и простой способ сделать это без дополнительного экспорта или сохранения в (с потерями) JPG:

Использование приложения предварительного просмотра (Mac):

  1. Открыть изображение
  2. Command-Shift-S для дублирования (создает копию)
  3. Command-S для сохранения
  4. Снимите флажок "Альфа".
  5. Удалить "копию" из имени файла (включая пробел)
    • Это перезапишет ваш оригинал. Если вы хотите сохранить оригинал, просто оставьте «копия» в имени.
  6. Сохранить
  7. Нажмите "Заменить", чтобы подтвердить, что вы хотите перезаписать оригинал.
    • Требуется только в том случае, если вы перезаписываете оригинал удалить альфа-канал
Mycah
источник
2
^ это лучший ответ, ИМХО. JPG не поддерживает альфа-каналы, и это позволит вам использовать формат без потерь и работать с альфа-каналом (вместо того, чтобы избегать его).
Cody-PHP-jQuery
4
Я не понимаю, почему команда iTunes Store показывает эту ошибку (альфа-канал) в значках приложений для часов, когда в предыдущих версиях они считали их правильными. Потерянное время! Спасибо Apple Inc!
Маркус
Большое спасибо за решение без потерь!
Щвова
10
В macOS High Sierra предварительный просмотр, похоже, всегда сохраняет PNG с альфа-каналом, даже если флажок не установлен. Если я открою сохраненный файл, в информационном окне всегда будет написано «Имеет альфа: 1». Инструмент sips тоже мне подсказывает hasAlpha: yes. Кроме того, iTunes Store жалуется на нежелательный альфа-канал («Операция не удалась - значок App Store… не может быть прозрачным или содержать альфа-канал»).
Стефан
2
Как отметил @Psychomentally, ImageMagick , наконец , работал для меня convert in.png -alpha off out.png. Re. Предварительный просмотр: включение / выключение «альфа» в диалоговом окне экспорта изменяет прогнозируемый размер файла, но при сохранении файл всегда записывается с альфа-информацией (и соответствующим размером).
Стефан
55

если вам нужно удалить весь альфа-канал из каталога с иконками, используйте эту команду:

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
Никита Пушкарь
источник
1
это дает 8-битное выходное изображение вместо 24-
Степан Яковенко
Если вы измените -alpha remove -alpha off $i;к -alpha remove -alpha off png24:$i; ней будет выводить 24bit PNG
Лоуренс Райерсон Дэвис IV
37

Если вы используете приложение Preview, нет необходимости экспортировать, а затем повторно экспортировать между jpg и png, просто выберите экспорт и под типом файла (PNG) вы увидите флажок альфа, снимите его и сохраните.

Оскар
источник
4
Раньше я использовал этот метод, но в MacOS High Sierra снятие флажка Alpha в предварительном просмотре ничего не дает, если вы не выберете JPG в качестве вывода. Если я попытаюсь открыть PNG, экспортировать PNG без альфа-канала и открыть новый PNG, у него будет альфа-канал.
Дэн Лоуни
Работал у меня в High Sierra (10.13.4)
fl034
14

Нет необходимости предварительно экспортировать изображение в jpg. Вы можете снять флажок для альфа-канала и экспортировать напрямую из PNG в PNG без альфа-канала в приложении предварительного просмотра.

введите описание изображения здесь

Стефан
источник
13

Вы можете попробовать imagemagick (также легко изменить размер для разных размеров):

convert in.png -background black -alpha remove -alpha off -resize 1024x1024 out.png
Психоментальность
источник
как выбрать файл png на cmd bash
Marlhex
Marlhexs-MacBook-Pro: Edgar marlhex $ ls ОБЕДНЫЙ ЭКРАН.jpg nuevo icon-5.png ОБЕДНЫЙ ЭКРАН.png nuevo icon-51024 copy.jpg nuevo icon-5.jpg nuevo icon-51024.png Marlhexs-MacBook-Pro: Эдгар marlhex $ nuevo icon-51024.png -bash: nuevo: команда не найдена
Marlhex
9

Только что получил следующую ошибку при попытке загрузить мое приложение в магазин приложений iTunes:

Не удалось выполнить операции iTunes Store

ОШИБКА ITMS-90717: «Недопустимый значок магазина приложений. Значок магазина приложений в каталоге ресурсов в« MyApp.app »не может быть прозрачным или содержать альфа-канал».

Я подтвердил, что значки в моем магазине приложений включают альфа-канал, найдя ресурс в Finder и просмотрев его информацию (⌘ + i). Под дополнительной информацией было показано:

Альфа-канал: Да

Нашел вышеупомянутое решение, чтобы использовать предварительный просмотр для удаления альфа-канала, экспортировав его с снятым флажком «Альфа», но нашел способ их пакетного экспорта, поскольку у меня было 18 ресурсов, из которых мне нужно было удалить альфа-канал.

Способ, которым я получил пакетный экспорт для работы, заключался в том, чтобы выбрать все мои активы значков приложения в Finder> щелкните правой кнопкой мыши> открыть (или открыть с предварительным просмотром)

Все активы теперь появятся в одном окне. Выделите все (⌘ + a), а затем выберите «Файл»> «Экспортировать выбранные изображения…»> «Разверните параметры»> снимите флажок «Альфа»> «Выбрать» (ваша папка назначения).

Готово! Все ваши изображения теперь экспортируются без альфа-канала.

Толанд Хон
источник
1
Я пробовал то же самое, но на High Sierra он больше не работает. Альфа-каналы не удаляются при предварительном просмотре.
Satheeshwaran
6

Чтобы удалить альфа-канал из png:

на Mac: предварительная версия 9.0 (macOS Sierra) может удалить альфа-канал при экспорте или сохранении изображения.

Предварительная версия 10.0 (944.2) (macOS High Sierra) не удаляет альфа-канал. И Экспорт, и / или Сохранить не удаляют альфа-канал из изображения.

Hynek
источник
2
Это выдвигает на первый план 2 недавние проблемы с фейспалмом от Apple .... High Sierra игнорирует параметр сохранения И причина, по которой многие люди здесь, Xcode внезапно не может загружать приложения из-за прозрачности значков
MobileVet
4

Столкнувшись с той же проблемой в контексте приложений Flutter, я выделил для этой задачи простой веб-сайт, на котором вы можете удалить альфа-каналы изображений:

Удалить альфа-канал

Обычно я запускаю ImageMagick с помощью веб-сборки прямо в браузере, поэтому ни одно из ваших изображений не загружается, и вам не нужны другие инструменты, такие как Gimp.

Али Насерзаде
источник
2

флажок альфа больше не отображается в предварительном просмотре

vboombatz
источник
Я все еще могу его видеть и использовать, вам нужно экспортировать файл.
Оскар,
2
Я могу поддержать это, его больше нет.
Wep0n
2

Что ж, раз вы на Mac, в следующий раз вы, вероятно, просто захотите использовать Automator. Конвертируйте изображение в BMP (без потерь) и обратно в PNG. Пусть сохранится и вуаля ...

Anticro
источник
0

Я поместил очень хорошее решение Никиты Пушкаря в сценарий оболочки, который конвертирует все значки 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
Питер Т.
источник
-2

У меня была такая же проблема, но другие ответы у меня сейчас не работали (возможно, это ошибка Apple). Я понял, что вы можете использовать этот веб-сайт, чтобы удалить альфа-канал из изображения.

Бхавин Патель
источник
2
Но это тот же сайт, что и здесь: stackoverflow.com/a/59591313/5468463
Vega
Повторяющийся ответ
Repose