Видаліть альфа-канал із зображення


101

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


5
Відкрити PNG у редакторі зображень і повторно зберегти, коли альфа-канал вимкнено?
Олександр О'Мара

1
Прийнята відповідь втрачає дані зображення та має зайвий непотрібний крок. Див рішення нижче замість цього: stackoverflow.com/a/38256612/5764320
Mycah

Я також створив невеликий інструмент, за допомогою якого ви можете просто перетягувати свої зображення та видаляти альфа-канал, не втрачаючи дані зображення: removealphachannel.com
Алі Насерзаде,

Відповіді:


47

Якщо припустити, що у вас немає іншого редактора зображень, ви можете відкрити його в Попередньому перегляді на своєму Mac і скористатися опцією Експорт, щоб зберегти його в іншому форматі - щоб ви позбулися альфа-каналу, можливо, найкраще експортувати у JPG (найкраща якість), а потім відкрийте його та знову експортуйте як PNG.

Сказавши це, я підозрюю, що ви, мабуть, у порядку, подавши піктограму з каналом прозорості, якщо фактичної прозорості немає.


9
Це призведе до незначної втрати якості, а також до більшого файлу PNG, оскільки формат PNG не підходить для стиснення артефактів, отриманих при створенні файлу JPG. Крім того, Apple відхиляє зображення PNG із альфа-каналами, навіть якщо немає фактичної прозорості.
philwilks

Я спробував стару версію macOS Sierra, і вона спрацювала.
Bhaumik Desai

8
Насправді ви можете просто зняти прапорець "Альфа" під час експорту в PNG. Не потрібно спочатку експортувати у JPG.
Петр Пеллер,

Як виконати операцію з даними зображення, щоб зменшити канали зображення з 4 до 3?
voldikss

5
Будь-які PNG із каналом прозорості не приймаються, незалежно від того, чи відображається прозорість на зображенні чи ні.
gbarnett

237

Прийнята відповідь на експорт у JPG, а потім назад у PNG не рекомендується.

  • Це додатковий крок у процесі (2 експорти)
  • JPG втрачає, тому ви втратите деякі дані зображення

Ось надзвичайно швидкий і простий спосіб зробити це без зайвого експорту чи збереження у (з втратами) JPG:

Використання програми попереднього перегляду (Mac):

  1. Відкрийте зображення
  2. Command-Shift-S для копіювання (створює копію)
  3. Command-S для збереження
  4. Зніміть прапорець біля пункту "Альфа"
  5. Видалити "копію" з імені файлу (включаючи пробіл)
    • Це перезапише ваш оригінал, якщо ви хочете зберегти оригінал, просто залиште "копію" в назві
  6. Зберегти
  7. Натисніть "Замінити", щоб підтвердити, що ви хочете замінити оригінал
    • Потрібно лише в тому випадку, якщо ви переписуєте оригінал видалити альфа-канал - -

2
^ це краща відповідь, ІМХО. JPG не підтримує альфа-канали, і це дозволить вам використовувати формат LOSSLESS та мати справу з альфа-каналом (замість того, щоб уникати цього).
Cody-PHP-jQuery

4
Я не розумію, чому команда iTunes Store показує цю помилку (альфа-канал) на піктограмах програм перегляду, коли в попередніх версіях вони вважають їх правильними. Втрачений час! Дякую, Apple Inc!
Маркус

Велике спасибі за рішення без втрат!
Щвова

10
З macOS High Sierra, попередній перегляд, здається, зберігає PNG завжди з альфа-каналом, навіть якщо прапорець не встановлений. Якщо я відкриваю збережений файл, в інформаційному полі завжди пишеться "Має альфа: 1". Інструмент "ковтки" також говорить мені hasAlpha: yes. Крім того, iTunes Store скаржиться на небажаний альфа-канал ("Помилка роботи - піктограма App Store ... не може бути прозорою та не містити альфа-канал").
Стефан

2
Як зазначив @Psychomentally, ImageMagick , нарешті , працював для мене convert in.png -alpha off out.png. Re. Попередній перегляд: увімкнення / вимкнення "альфа" у діалоговому вікні експорту змінює передбачуваний розмір файлу, але при збереженні файл завжди записується з альфа-інформацією (та відповідним розміром).
Стефан

53

якщо вам потрібно видалити весь альфа-канал з каталогу за допомогою піктограм, використовуйте цю команду:

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-
Степан Яковенко

Якщо ви перейдете -alpha remove -alpha off $i;на -alpha remove -alpha off png24:$i; нього, виведеться 24 біт png
Лоуренс Райерсон Девіс IV

37

Якщо ви використовуєте програму попереднього перегляду, немає необхідності експортувати, тоді реекспортуйте між jpg та png, просто виберіть експорт, і під типом файлу (PNG) ви побачите альфа-прапорець, скасуєте його та збережете.


4
Раніше я використовував цей метод, але на MacOS High Sierra зняття прапорця Alpha у попередньому перегляді нічого не робить, якщо ви не вибрали JPG як вихідний файл. Якщо я спробую відкрити PNG, експортувати PNG без альфа та відкрити новий PNG, він має альфа-канал.
Dan Loughney,

Працював для мене у Високій Сьєррі (10.13.4)
fl034

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 LUNCH SCREEN.jpg nuevo icon-5.png LUNCH SCREEN.png nuevo icon-51024 copy.jpg nuevo icon-5.jpg nuevo icon-51024.png Marlhexs-MacBook-Pro: Edgar marlhex $ nuevo icon-51024.png -bash: nuevo: команду не знайдено
Marlhex

13

Не потрібно спочатку експортувати зображення у jpg. Ви можете зняти прапорець для альфа-каналу та експортувати безпосередньо з png в png без альфа-каналу в програмі попереднього перегляду.

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


9

Щойно з’явилася така помилка при спробі завантажити програму до магазину програм iTunes:

Помилка роботи магазину iTunes

ПОМИЛКА ITMS-90717: "Недійсна піктограма App Store. Піктограма App Store у каталозі активів у" MyApp.app "не може бути прозорою та містити альфа-канал."

Я підтвердив, що мої піктограми магазину програм включали альфа-канал, знаходячи об’єкт у Finder та шукаючи його інформацію (⌘ + i). Внизу Докладніше, це показало:

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

Знайшов наведене вище рішення, щоб використовувати Preview для видалення альфа-каналу, експортуючи його, якщо прапорець Альфа не встановлено, але знайшов спосіб пакетного експорту, оскільки у мене було 18 ресурсів, з яких мені потрібно було позбавити альфа-канал.

Я отримав пакетний експорт на роботу, вибравши всі значки моїх значків програми у інструменті пошуку> правою кнопкою миші> відкрити (або відкрити з попереднім переглядом)

Тепер усі активи з’являться в одному вікні. Виділіть все (⌘ + a), а потім виберіть Файл> Експортувати вибрані зображення ...> Розгорнути параметри> зніміть прапорець Альфа> Вибрати (папка призначення)

Готово! Усі ваші зображення зараз експортуються з відключеним альфа-каналом.


1
Я пробував те саме, але це вже не працює на High Sierra. Альфа-канали не видаляються в режимі попереднього перегляду.
Satheeshwaran

6

Щоб видалити альфа-канал з png:

на Mac: Попередній перегляд версії 9.0 (macOS Sierra) може видалити альфа-канал, якщо ви експортуєте або зберігаєте зображення.

Версія попереднього перегляду 10.0 (944.2) (macOS High Sierra) не видаляє альфа-канал. Експорт та / або Збереження не видаляє альфа-канал із зображення.


2
Це висвітлює 2 останні проблеми з facepalm від Apple .... High Sierra ігноруючи опцію збереження І тому, що тут багато людей, Xcode раптом не може завантажувати програми через прозорість піктограм
MobileVet

4

Натрапивши на ту саму проблему в контексті програм Flutter, для цього завдання я виділив простий веб-сайт, де ви можете видалити альфа-канали зображень:

Видаліть альфа-канал

В основному я запускаю ImageMagick, використовуючи Web Assembly безпосередньо в браузері, тому жодне з ваших зображень не завантажується, і вам не потрібні інші інструменти, такі як Gimp.


2

прапорець альфа відсутній у попередньому перегляді


Я все ще бачу його та використовую, вам потрібно експортувати файл.
Оскар

2
Я можу це другий, його вже немає.
Wep0n

2

Ну, оскільки ви працюєте на Mac, наступного разу ви, мабуть, просто захочете скористатися Automator. Перетворіть зображення в BMP (без втрат) і назад у PNG. Нехай це зберігає і вуаля ...


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
Вега

Дублікат відповіді
спочинь
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.