Ich habe ein App-Symbol für iOS, aber Apple lässt nicht zu, dass Alpha im Bild enthalten ist. Wie entferne ich diesen Alpha-Kanal? Ich habe nur das PNG-Bild bei mir. Ich habe keine Quelldatei, da mein Freund das Bild für mich gemacht hat.
Ich habe ein App-Symbol für iOS, aber Apple lässt nicht zu, dass Alpha im Bild enthalten ist. Wie entferne ich diesen Alpha-Kanal? Ich habe nur das PNG-Bild bei mir. Ich habe keine Quelldatei, da mein Freund das Bild für mich gemacht hat.
Antworten:
Angenommen, Sie haben keinen anderen Bildeditor, können Sie ihn in der Vorschau auf Ihrem Mac öffnen und mit der Option Exportieren in einem anderen Format speichern. Um sicherzustellen, dass Sie den Alphakanal entfernen, ist es möglicherweise am besten, ihn zu exportieren in JPG (beste Qualität), öffnen Sie das und exportieren Sie es erneut als PNG.
Ich vermute jedoch, dass Sie wahrscheinlich in Ordnung sind, ein Symbol mit einem Transparenzkanal einzureichen, solange keine tatsächliche Transparenz vorhanden ist.
Die akzeptierte Antwort für den Export nach JPG und dann zurück nach PNG wird nicht empfohlen.
Hier ist eine superschnelle und einfache Möglichkeit, dies ohne zusätzlichen Export oder Speichern in (verlustbehaftetes) JPG zu tun:
Verwenden der Vorschau-App (Mac):
hasAlpha: yes
. Außerdem beschwert sich der iTunes Store über den unerwünschten Alphakanal ("Vorgang fehlgeschlagen - Das App Store-Symbol ... kann weder transparent sein noch einen Alphakanal enthalten").
convert in.png -alpha off out.png
. Re. Vorschau: Durch Ein- und Ausschalten von "Alpha" im Exportdialog wird die vorhergesagte Dateigröße geändert. Beim Speichern wird die Datei jedoch immer mit Alpha-Informationen (und der entsprechenden Größe) geschrieben.
Wenn Sie alle Alphakanäle mit Symbolen aus dem Verzeichnis entfernen müssen, verwenden Sie diesen Befehl:
for i in `ls *.png`; do convert $i -background black -alpha remove -alpha off $i; done
Wenn Sie Mac OS Mojave haben und "Konvertierungsbefehl nicht gefunden" hatten
brew install imagemagick
Homebrew installieren
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;
wird ein 24-Bit-PNG ausgegeben
Wenn Sie die Vorschau-App verwenden, müssen Sie nicht exportieren und dann zwischen jpg und png erneut exportieren. Wählen Sie einfach exportieren. Unterhalb des Dateityps (PNG) wird ein Alpha-Kontrollkästchen angezeigt. Deaktivieren Sie es und speichern Sie es.
Sie können imagemagick ausprobieren (auch die Größe kann leicht für verschiedene Größen geändert werden):
convert in.png -background black -alpha remove -alpha off -resize 1024x1024 out.png
Beim Versuch, meine App in den iTunes App Store hochzuladen, wurde folgende Fehlermeldung angezeigt:
iTunes Store-Vorgang fehlgeschlagen
FEHLER ITMS-90717: "Ungültiges App Store-Symbol. Das App Store-Symbol im Asset-Katalog in 'MyApp.app' kann weder transparent sein noch einen Alphakanal enthalten."
Ich habe bestätigt, dass meine App Store-Symbole den Alpha-Kanal enthalten, indem ich das Asset im Finder gefunden und seine Informationen nachgeschlagen habe (⌘ + i). Unter Weitere Informationen zeigte es:
Alpha-Kanal: Ja
Wir haben die obige Lösung gefunden, um mithilfe der Vorschau den Alphakanal zu entfernen, indem Sie ihn mit deaktiviertem Kontrollkästchen "Alpha" exportieren. Sie haben jedoch eine Möglichkeit gefunden, sie stapelweise zu exportieren, da ich 18 Assets hatte, von denen ich den Alphakanal entfernen musste.
Die Art und Weise, wie ich den Batch-Export zum Laufen brachte, bestand darin, alle meine App-Symbol-Assets im Finder auszuwählen> Rechtsklick> Öffnen (oder mit Vorschau öffnen).
Alle Assets werden jetzt im selben Fenster angezeigt. Wählen Sie alle aus (⌘ + a) und wählen Sie dann Datei> Ausgewählte Bilder exportieren…> Optionen erweitern> Deaktivieren Sie das Kontrollkästchen Alpha> Auswählen (Ihr Zielordner).
Getan! Alle Ihre Bilder werden jetzt mit entferntem Alphakanal exportiert.
So entfernen Sie den Alphakanal aus PNG:
unter Mac: Preview Version 9.0 (macOS Sierra) kann den Alphakanal entfernen, wenn Sie das Bild exportieren oder speichern.
Vorschau Version 10.0 (944.2) (macOS High Sierra) entfernt den Alphakanal nicht. Sowohl Exportieren als auch Speichern speichern den Alphakanal nicht aus dem Bild.
Nachdem ich im Zusammenhang mit Flutter-Anwendungen auf dasselbe Problem gestoßen bin, habe ich für diese Aufgabe eine einfache Website eingerichtet, auf der Sie Alphakanäle von Bildern entfernen können:
Grundsätzlich starte ich ImageMagick mit Web Assembly direkt im Browser, sodass keines Ihrer Bilder hochgeladen wird und Sie keine anderen Tools wie Gimp benötigen.
Ich habe die sehr schöne Lösung von Nikita Pushkar in ein Shell-Skript eingefügt, das alle iOS-Symbole konvertiert, die in res/icon/ios
:
Es verwendet Brew, um imagemagick zu installieren, wenn es nicht verfügbar ist. Ich denke, es läuft nur auf dem 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
Ich hatte das gleiche Problem, aber die anderen Antworten funktionierten jetzt nicht für mich (es könnte ein Apple-Fehler sein). Ich habe herausgefunden, dass Sie diese Website verwenden können , um den Alphakanal aus einem Bild zu entfernen.