Rimuovi il canale alfa in un'immagine


101

Ho un'icona dell'app per iOS ma Apple non consente la presenza di alpha nell'immagine. Come rimuovere questo canale alfa? Ho solo l'immagine png con me Non ho il file sorgente come il mio amico ha fatto l'immagine per me.


5
Apri il PNG in un editor di immagini e salva di nuovo con il canale alfa disabilitato?
Alexander O'Mara

1
La risposta accettata perde i dati dell'immagine e presenta un passaggio aggiuntivo non necessario. Vedi invece la soluzione di seguito: stackoverflow.com/a/38256612/5764320
Mycah

Ho anche creato un piccolo strumento, in cui puoi semplicemente trascinare e rilasciare le tue immagini e rimuovere il canale alfa, senza perdere i dati dell'immagine: removealphachannel.com
Ali Nasserzadeh

Risposte:


48

Supponendo che tu non abbia un altro editor di immagini, puoi aprirlo in Anteprima sul tuo Mac e utilizzare l'opzione Esporta per salvarlo di nuovo in un formato diverso: per assicurarti di eliminare il canale alfa, potrebbe essere meglio esportare in JPG (migliore qualità), quindi aprilo ed esportalo di nuovo come PNG.

Detto questo, sospetto che tu stia probabilmente inviando un'icona con un canale di trasparenza purché non ci sia trasparenza effettiva.


9
Ciò comporterà una piccola perdita di qualità e anche un file PNG più grande poiché il formato PNG non è adatto a comprimere il tipo di artefatti che si ottengono durante la produzione di un file JPG. Inoltre, Apple rifiuta le immagini PNG con canali alfa anche se non c'è trasparenza effettiva.
philwilks

Ho provato una versione precedente di macOS Sierra e ha funzionato.
Bhaumik Desai

9
In realtà puoi semplicemente deselezionare la casella di controllo "Alpha" durante l'esportazione in PNG. Non è necessario prima esportare in JPG.
Petr Peller

Come eseguire operazioni sui dati di immagine per ridurre i canali di immagine da 4 a 3?
voldikss

5
Qualsiasi PNG con un canale di trasparenza non sarà accettato, indipendentemente dal fatto che la trasparenza sia mostrata o meno nell'immagine.
gbarnett

237

La risposta accettata per esportare in JPG, quindi tornare in PNG non è consigliata.

  • È un passaggio aggiuntivo nel processo (2 esportazioni)
  • JPG è con perdita di dati, quindi perderai alcuni dati dell'immagine

Ecco un modo super veloce e facile per farlo senza l'esportazione extra o il salvataggio in JPG (con perdita):

Utilizzando l'app Anteprima (Mac):

  1. Apri l'immagine
  2. Comando-Maiuscole-S per duplicare (crea una copia)
  3. Comando-S per salvare
  4. Deseleziona la casella di controllo "Alpha"
  5. Elimina "copia" dal nome del file (compreso lo spazio)
    • Questo sovrascriverà il tuo originale, se vuoi mantenere l'originale, lascia "copia" nel nome
  6. Salva
  7. Fare clic su "Sostituisci" per confermare che si desidera sovrascrivere l'originale
    • Necessario solo se stai sovrascrivendo l'originale rimuovere il canale alfa

2
^ questa è una risposta migliore, IMHO. JPG non supporta i canali alfa e questo ti permetterà di utilizzare un formato SENZA PERDITE e gestire il canale alfa (invece di evitarlo).
Cody-PHP-jQuery

4
Non capisco perché il team di iTunes Store mostra questo errore (canale alfa) nelle icone delle app dell'orologio, quando nelle versioni precedenti le considera corrette. Tempo perso! Grazie Apple Inc!
Markus

Grazie mille per la soluzione senza perdite!
Shchvova

10
Con macOS High Sierra, l'anteprima sembra salvare i PNG sempre CON un canale alfa, anche se la casella di controllo è deselezionata. Se apro il file salvato, la casella delle informazioni dice sempre "Has Alpha: 1". Lo dice anche lo strumento sips hasAlpha: yes. Inoltre, iTunes Store si lamenta del canale alfa indesiderato ("Operazione non riuscita - L'icona dell'App Store ... non può essere trasparente né contenere un canale alfa").
Stefan

2
Come già detto da @Psychomentally, ImageMagick finalmente ha funzionato per me: convert in.png -alpha off out.png. Ri. Anteprima: l'attivazione / disattivazione di "alpha" nella finestra di dialogo di esportazione cambia la dimensione del file prevista, ma il salvataggio scrive sempre il file con le informazioni alfa (e la dimensione corrispondente).
Stefan

53

se hai bisogno di rimuovere tutto il canale alfa dalla directory con le icone usa questo comando:

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

se hai Mac OS Mojave e hai "convert command not found"

brew install imagemagick

Per installare Homebrew

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

1
questo fornisce un'immagine di output a 8 bit invece di 24 bit
Stepan Yakovenko

Se si cambia -alpha remove -alpha off $i;ad -alpha remove -alpha off png24:$i; esso, verrà emesso un png a 24 bit
Lawrence Ryerson Davis IV,

37

Se stai utilizzando l'app Anteprima, non è necessario esportare quindi riesportare tra jpg e png, basta scegliere esporta e sotto il tipo di file (PNG) vedrai una casella di controllo alfa, deselezionala e salva.


4
Usavo questo metodo, ma su MacOS High Sierra, deselezionare Alpha in Anteprima non fa nulla a meno che tu non scelga JPG come output. Se provo ad aprire un PNG, Esporta PNG senza Alpha e apro il nuovo PNG, ha un canale Alpha.
Dan Loughney,

Ha lavorato per me in High Sierra (10.13.4)
fl034

13

Puoi provare imagemagick (anche ridimensionare facilmente per diverse dimensioni):

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

come faccio a selezionare il file png su cmd bash
Marlhex

Marlhexs-MacBook-Pro: Edgar marlhex $ ls PRANZO SCREEN.jpg nuevo icon-5.png PRANZO SCHERMO.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: comando non trovato
Marlhex

13

Non è necessario esportare prima l'immagine in jpg. Puoi deselezionare la casella di controllo per il canale alfa ed esportare direttamente da un png a un png senza canale alfa nell'app di anteprima.

inserisci qui la descrizione dell'immagine


9

Ho appena ricevuto il seguente errore durante il tentativo di caricare la mia app sull'App Store di iTunes:

Operazioni su iTunes Store non riuscite

ERRORE ITMS-90717: "Icona App Store non valida. L'icona App Store nel catalogo risorse in" MyApp.app "non può essere trasparente né contenere un canale alfa."

Ho confermato che le icone del mio app store includevano il canale alfa individuando la risorsa nel Finder e cercando le sue informazioni (⌘ + i). Sotto Altre informazioni, mostrava:

Canale alfa: sì

Ho trovato la soluzione sopra per utilizzare Anteprima per rimuovere il canale alfa esportandolo con la casella di controllo Alpha deselezionata, ma ho trovato un modo per esportarli in batch poiché avevo 18 risorse da cui dovevo rimuovere il canale alfa.

Il modo in cui ho ottenuto l'esportazione in batch per funzionare è stato quello di selezionare tutte le risorse dell'icona della mia app nel Finder> fare clic con il tasto destro> apri (o apri con anteprima)

Tutti gli asset verranno ora visualizzati nella stessa finestra. Seleziona tutto (⌘ + a), quindi seleziona File> Esporta immagini selezionate ...> Espandi Opzioni> deseleziona la casella di controllo Alpha> Scegli (la cartella di destinazione)

Fatto! Tutte le tue immagini vengono ora esportate con il canale alfa rimosso.


1
Ho provato lo stesso ma non funziona più su High Sierra. I canali alfa non vengono rimossi in Anteprima.
Satheeshwaran

6

Per rimuovere il canale alfa da png:

su Mac: la versione di anteprima 9.0 (macOS Sierra) può rimuovere il canale alfa se esporti o salvi l'immagine.

La versione di anteprima 10.0 (944.2) (macOS High Sierra) non rimuove il canale alfa. Sia Esporta che / o Salva non rimuove il canale alfa dall'immagine.


2
Questo evidenzia 2 recenti problemi di facepalm di Apple ... High Sierra che ignora un'opzione di salvataggio E il motivo per cui molte persone sono qui, Xcode improvvisamente non può caricare app a causa della trasparenza delle icone
MobileVet

4

Avendo riscontrato lo stesso problema nel contesto delle applicazioni Flutter, ho dedicato un semplice sito Web a questa attività in cui è possibile rimuovere i canali alfa delle immagini:

Rimuovi canale alfa

Fondamentalmente eseguo ImageMagick utilizzando Web Assembly direttamente nel browser, quindi nessuna delle tue immagini viene caricata e non hai bisogno di altri strumenti come Gimp.


2

la casella di controllo alfa non è più presente nell'anteprima


Posso ancora vederlo e usarlo, devi esportare il file.
Oscar

2
Posso assecondarlo, non c'è più.
Wep0n

2

Bene, dato che sei su un Mac, la prossima volta probabilmente vorrai usare Automator. Converti l'immagine in BMP (senza perdita di dati) e torna in PNG. Lascialo salvare e voilà ...


0

Ho inserito la soluzione molto bella di Nikita Pushkar in uno script di shell che converte tutte le icone iOS trovate in res/icon/ios:

Usa brew per installare imagemagick se non è disponibile, quindi immagino che funzionerà solo su 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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.