Usuń kanał alfa z obrazu


103

Mam ikonę aplikacji na iOS, ale Apple nie zezwala na wyświetlanie alfa na obrazie. Jak usunąć ten kanał alfa? Mam przy sobie tylko obraz png. Nie mam pliku źródłowego, ponieważ mój znajomy zrobił to za mnie.


5
Otworzyć PNG w edytorze obrazów i ponownie zapisać z wyłączonym kanałem alfa?
Alexander O'Mara,

1
Zaakceptowana odpowiedź powoduje utratę danych obrazu i dodatkowy niepotrzebny krok. Zamiast tego zobacz rozwiązanie poniżej: stackoverflow.com/a/38256612/5764320
Mycah

Zrobiłem również małe narzędzie, w którym możesz po prostu przeciągać i upuszczać obrazy oraz usuwać kanał alfa, bez utraty danych obrazu: removealphachannel.com
Ali Nasserzadeh

Odpowiedzi:


48

Zakładając, że nie masz innego edytora obrazów, możesz go otworzyć w Podglądzie na komputerze Mac i użyć opcji Eksportuj, aby ponownie zapisać go w innym formacie - aby upewnić się, że pozbędziesz się kanału alfa, najlepiej wyeksportować do JPG (najlepsza jakość), a następnie otwórz go i ponownie wyeksportuj jako plik PNG.

Powiedziawszy to, podejrzewam, że prawdopodobnie jesteś w porządku, przesyłając ikonę z kanałem przezroczystości, o ile nie ma rzeczywistej przezroczystości.


9
Spowoduje to niewielką utratę jakości, a także większy plik PNG, ponieważ format PNG nie jest odpowiedni do kompresji tego rodzaju artefaktów, które można uzyskać podczas tworzenia pliku JPG. Ponadto Apple odrzuca obrazy PNG z kanałami alfa, nawet jeśli nie ma rzeczywistej przezroczystości.
philwilks,

Próbowałem na starszej wersji macOS Sierra i zadziałało.
Bhaumik Desai

10
Podczas eksportowania do formatu PNG możesz po prostu odznaczyć pole wyboru „Alfa”. Nie musisz najpierw eksportować do JPG.
Petr Peller

Jak wykonać operację na danych obrazu, aby zmniejszyć kanały obrazu z 4 do 3?
voldikss

5
Wszelkie pliki PNG z kanałem przezroczystości nie będą akceptowane, niezależnie od tego, czy przezroczystość jest wyświetlana na obrazie, czy nie.
gbarnett

240

Zaakceptowana odpowiedź na eksport do JPG, a następnie powrót do PNG nie jest zalecana.

  • To dodatkowy etap procesu (2 eksporty)
  • JPG jest stratny, więc utracisz część danych obrazu

Oto super szybki i łatwy sposób na zrobienie tego bez dodatkowego eksportu lub zapisywania do (stratnego) pliku JPG:

Korzystanie z aplikacji Podgląd (Mac):

  1. Otwórz obraz
  2. Command-Shift-S, aby zduplikować (tworzy kopię)
  3. Command + S, aby zapisać
  4. Usuń zaznaczenie pola wyboru „Alfa”
  5. Usuń „kopię” z nazwy pliku (łącznie ze spacją)
    • Spowoduje to nadpisanie oryginału, jeśli chcesz zachować oryginał, po prostu zostaw „kopię” w nazwie
  6. Zapisać
  7. Kliknij „Zamień”, aby potwierdzić zamiar zastąpienia oryginału
    • Jest to konieczne tylko wtedy, gdy nadpisujesz oryginał usuń kanał alfa

2
^ to jest lepsza odpowiedź, IMHO. JPG nie obsługuje kanałów alfa, a to pozwoli ci użyć formatu LOSSLESS i poradzić sobie z kanałem alfa (zamiast go unikać).
Cody-PHP-jQuery

4
Nie rozumiem, dlaczego zespół iTunes Store wyświetla ten błąd (kanał alfa) w ikonach aplikacji zegarka, podczas gdy w poprzednich wersjach uważają je za prawidłowe. Stracony czas! Dziękuję Apple Inc!
Markus

Wielkie dzięki za bezstratne rozwiązanie!
Shchvova

10
W systemie macOS High Sierra Preview wydaje się zapisywać pliki PNG zawsze z kanałem alfa, nawet jeśli pole wyboru nie jest zaznaczone. Jeśli otworzę zapisany plik, w polu informacyjnym zawsze jest napisane „Ma Alpha: 1”. Mówi mi również narzędzie Sips hasAlpha: yes. Ponadto iTunes Store skarży się na niechciany kanał alfa („Operacja nie powiodła się - ikona App Store… nie może być przezroczysta ani zawierać kanału alfa”).
Stefan

2
Jak wspomniano przez @Psychomentally, ImageMagick ostatecznie pracował dla mnie convert in.png -alpha off out.png. Re. Podgląd: włączanie / wyłączanie "alfa" w oknie dialogowym eksportu zmienia przewidywany rozmiar pliku, ale zapisywanie zawsze powoduje zapisanie pliku z informacją alfa (i odpowiednim rozmiarem).
Stefan

55

jeśli chcesz usunąć cały kanał alfa z katalogu z ikonami, użyj tego polecenia:

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

jeśli masz system Mac OS Mojave i otrzymałeś komunikat „Nie znaleziono polecenia konwersji”

brew install imagemagick

Aby zainstalować Homebrew

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

1
daje to 8-bitowy obraz wyjściowy zamiast 24
Stepan Yakovenko

Po zmianie -alpha remove -alpha off $i;do -alpha remove -alpha off png24:$i; niej będzie wyprowadzać 24bit png
Lawrence Ryerson Davis IV

37

Jeśli korzystasz z aplikacji Preview, nie ma potrzeby eksportowania, a następnie ponownego eksportowania między jpg i png, po prostu wybierz eksport, a pod typem pliku (PNG) zobaczysz pole wyboru alfa, odznacz je i zapisz.


4
Kiedyś używałem tej metody, ale na MacOS High Sierra odznaczenie Alpha w Preview nie robi nic, chyba że wybierzesz JPG jako wyjście. Jeśli spróbuję otworzyć PNG, wyeksportować PNG bez Alpha i otworzyć nowy PNG, ma kanał Alpha.
Dan Loughney

Pracował dla mnie w High Sierra (
10.13.4

14

Nie ma potrzeby wcześniejszego eksportowania obrazu do formatu jpg. Możesz odznaczyć pole wyboru kanału alfa i eksportować bezpośrednio z png do png bez kanału alfa w aplikacji podglądu.

wprowadź opis obrazu tutaj


13

Możesz wypróbować imagemagick (również łatwo zmienić rozmiar dla różnych rozmiarów):

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

jak wybrać plik png na 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: nie znaleziono polecenia
Marlhex

9

Właśnie otrzymałem następujący błąd podczas próby przesłania mojej aplikacji do sklepu z aplikacjami iTunes:

Operacje w sklepie iTunes Store nie powiodły się

BŁĄD ITMS-90717: „Nieprawidłowa ikona App Store. Ikona App Store w katalogu zasobów w„ MyApp.app ”nie może być przezroczysta ani zawierać kanału alfa.”

Potwierdziłem, że ikony mojego sklepu z aplikacjami zawierały kanał alfa, lokalizując zasób w Finderze i sprawdzając jego informacje (⌘ + i). Pod Więcej informacji pokazało:

Kanał alfa: tak

Znalazłem rozwiązanie powyżej, aby użyć podglądu, aby usunąć kanał alfa, eksportując go z odznaczonym polem wyboru Alpha, ale wymyśliłem sposób na wyeksportowanie ich zbiorczo, ponieważ miałem 18 zasobów, z których musiałem usunąć kanał alfa.

Sposób, w jaki uzyskałem eksport wsadowy do pracy, polegał na wybraniu wszystkich zasobów ikon aplikacji w wyszukiwarce> kliknięcie prawym przyciskiem myszy> otwórz (lub otwórz z podglądem)

Wszystkie zasoby pojawią się teraz w tym samym oknie. Zaznacz wszystko (⌘ + a), a następnie wybierz Plik> Eksportuj wybrane obrazy…> Rozwiń opcje> odznacz pole wyboru Alfa> Wybierz (folder docelowy)

Gotowe! Wszystkie obrazy są teraz eksportowane z usuniętym kanałem alfa.


1
Próbowałem tego samego, ale nie działa już na High Sierra. Kanały alfa nie są usuwane w podglądzie.
Satheeshwaran

6

Aby usunąć kanał alfa z png:

na komputerze Mac: wersja Preview 9.0 (macOS Sierra) może usunąć kanał alfa podczas eksportowania lub zapisywania obrazu.

Wersja Preview 10.0 (944.2) (macOS High Sierra) nie usuwa kanału alfa. Zarówno Eksportuj, jak i / lub Zapisz nie usuwają kanału alfa z obrazu.


2
To podkreśla 2 ostatnie problemy z facepalmem przez Apple .... High Sierra ignoruje opcję zapisywania ORAZ powód, dla którego jest tu wiele osób, Xcode nagle nie może przesyłać aplikacji z powodu przejrzystości ikon
MobileVet

4

Mając ten sam problem w kontekście aplikacji Flutter, przeznaczyłem do tego zadania prostą stronę internetową, na której można usunąć kanały alfa obrazów:

Usuń kanał alfa

Zasadniczo uruchamiam ImageMagick używając Web Assembly bezpośrednio w przeglądarce, więc żadne z twoich obrazów nie jest przesyłane i nie potrzebujesz żadnych innych narzędzi, takich jak Gimp.


2

w podglądzie nie ma już pola wyboru alfa


Nadal go widzę i używam, musisz wyeksportować plik.
Oscar

2
Mogę to poprzeć, zniknęło.
Wep0n

2

Cóż, ponieważ jesteś na komputerze Mac, następnym razem prawdopodobnie będziesz chciał po prostu użyć Automatora. Przekonwertuj obraz na BMP (bezstratny) iz powrotem do PNG. Niech to zapisze i voila ...


0

Umieściłem bardzo ładne rozwiązanie Nikity Pushkar w skrypcie powłoki, który konwertuje wszystkie ikony iOS znalezione w res/icon/ios:

Używa brew do zainstalowania imagemagick, jeśli nie jest dostępny, więc myślę, że będzie działać tylko na Macu.

#! /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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.