Entfernen Sie den Alphakanal in einem Bild


101

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.


5
Öffnen Sie das PNG in einem Bildeditor und speichern Sie es erneut, während der Alphakanal deaktiviert ist.
Alexander O'Mara

1
Die akzeptierte Antwort verliert Bilddaten und hat einen zusätzlichen, nicht benötigten Schritt. Siehe Lösung unten stattdessen: stackoverflow.com/a/38256612/5764320
Mycah

Ich habe auch ein kleines Tool erstellt, mit dem Sie Ihre Bilder einfach per Drag & Drop verschieben und den Alphakanal entfernen können, ohne Bilddaten zu verlieren: removeealphachannel.com
Ali Nasserzadeh

Antworten:


49

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.


9
Dies führt zu einem geringen Qualitätsverlust und auch zu einer größeren PNG-Datei, da das PNG-Format nicht geeignet ist, die Art von Artefakten zu komprimieren, die Sie beim Erstellen einer JPG-Datei erhalten. Darüber hinaus lehnt Apple PNG-Bilder mit Alphakanälen ab, auch wenn keine tatsächliche Transparenz vorliegt.
Philwilks

Ich habe eine ältere Version von macOS Sierra ausprobiert und es hat funktioniert.
Bhaumik Desai

8
Sie können das Kontrollkästchen "Alpha" beim Exportieren in PNG einfach deaktivieren. Sie müssen nicht zuerst nach JPG exportieren.
Petr Peller

Wie werden Bilddaten bearbeitet, um die Bildkanäle von 4 auf 3 zu reduzieren?
Voldikss

4
PNGs mit einem Transparenzkanal werden nicht akzeptiert, unabhängig davon, ob Transparenz im Bild angezeigt wird oder nicht.
Gbarnett

235

Die akzeptierte Antwort für den Export nach JPG und dann zurück nach PNG wird nicht empfohlen.

  • Es ist ein zusätzlicher Schritt im Prozess (2 Exporte)
  • JPG ist verlustbehaftet, sodass Sie einige Bilddaten verlieren

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):

  1. Öffnen Sie das Bild
  2. Befehl-Umschalt-S zum Duplizieren (erstellt eine Kopie)
  3. Befehl-S zum Speichern
  4. Deaktivieren Sie das Kontrollkästchen "Alpha"
  5. "Kopie" aus Dateiname löschen (einschließlich Leerzeichen)
    • Dadurch wird Ihr Original überschrieben. Wenn Sie das Original behalten möchten, lassen Sie einfach "Kopie" im Namen
  6. sparen
  7. Klicken Sie auf "Ersetzen" , um zu bestätigen, dass Sie das Original überschreiben möchten
    • Nur erforderlich, wenn Sie Ihr Original überschreiben Alphakanal entfernen

2
^ Das ist eine bessere Antwort, IMHO. JPG unterstützt keine Alphakanäle und dies ermöglicht es Ihnen, ein VERLUSTLOSES Format zu verwenden und mit dem Alphakanal umzugehen (anstatt ihn zu vermeiden).
Cody-PHP-jQuery

4
Ich verstehe nicht, warum iTunes Store Team diesen Fehler (Alpha-Kanal) in Watch App-Symbolen anzeigt, wenn sie in früheren Versionen als korrekt angesehen werden. Verlorene Zeit! Vielen Dank, dass Sie Apple Inc!
Markus

Vielen Dank für die verlustfreie Lösung!
Shchvova

10
Mit macOS High Sierra scheint Preview PNGs immer MIT einem Alphakanal zu speichern, auch wenn das Kontrollkästchen deaktiviert ist. Wenn ich die gespeicherte Datei öffne, steht im Infobox immer "Hat Alpha: 1". Das Schluck-Tool sagt es mir auch 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").
Stefan

2
Wie von @Psychomentally erwähnt, hat ImageMagick endlich für mich funktioniert : 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.
Stefan

51

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

1
Dies ergibt 8-Bit-Ausgabebild anstelle von 24-Bit
Stepan

Wenn Sie darauf wechseln -alpha remove -alpha off $i;, -alpha remove -alpha off png24:$i; wird ein 24-Bit-PNG ausgegeben
Lawrence Ryerson Davis IV

37

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.


4
Früher habe ich diese Methode verwendet, aber unter MacOS High Sierra führt das Deaktivieren von Alpha in der Vorschau nichts aus, es sei denn, Sie wählen JPG als Ausgabe. Wenn ich versuche, ein PNG zu öffnen, PNG ohne Alpha zu exportieren und das neue PNG zu öffnen, hat es einen Alpha-Kanal.
Dan Loughney

Arbeitete für mich in High Sierra (10.13.4)
fl034

13

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

Wie wähle ich die PNG-Datei auf 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: Befehl nicht gefunden
Marlhex

13

Es ist nicht erforderlich, das Bild zuerst in jpg zu exportieren. Sie können das Kontrollkästchen für den Alpha-Kanal deaktivieren und in der Vorschau-App direkt von einem PNG in ein PNG ohne Alpha-Kanal exportieren.

Geben Sie hier die Bildbeschreibung ein


9

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.


1
Ich habe das gleiche versucht, aber es funktioniert nicht mehr in High Sierra. Alpha-Kanäle werden in der Vorschau nicht entfernt.
Satheeshwaran

6

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.


2
Dies hebt 2 aktuelle Facepalm-Probleme von Apple hervor .... High Sierra ignoriert eine Speicheroption UND der Grund, warum viele Leute hier sind, ist, dass Xcode aufgrund der
Symboltransparenz

4

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:

Alpha-Kanal entfernen

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.


2

Das Alpha-Kontrollkästchen ist in der Vorschau nicht mehr vorhanden


Ich kann es immer noch sehen und verwenden, Sie müssen die Datei exportieren.
Oscar

2
Ich kann das unterstützen, es ist weg.
Wep0n

2

Nun, da Sie auf einem Mac arbeiten, möchten Sie beim nächsten Mal wahrscheinlich nur Automator verwenden. Konvertieren Sie das Bild in BMP (verlustfrei) und zurück in PNG. Lass es retten und voila ...


0

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.