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.
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.
Odpowiedzi:
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.
Zaakceptowana odpowiedź na eksport do JPG, a następnie powrót do PNG nie jest zalecana.
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):
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”).
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).
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
-alpha remove -alpha off $i;
do -alpha remove -alpha off png24:$i;
niej będzie wyprowadzać 24bit png
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.
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
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.
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.
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:
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.
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
Miałem ten sam problem, ale inne odpowiedzi nie działały teraz dla mnie (może to być błąd Apple). Doszedłem do wniosku, że możesz użyć tej witryny do usunięcia kanału alfa z obrazu.