Supprimer le canal alpha dans une image


101

J'ai une icône d'application pour iOS mais Apple n'autorise pas l'alpha à être dans l'image. Comment supprimer ce canal alpha? Je n'ai que l'image png avec moi Je n'ai pas le fichier source car mon ami l'a fait pour moi.


5
Ouvrir le PNG dans un éditeur d'image et ré-enregistrer avec le canal alpha désactivé?
Alexander O'Mara

1
La réponse acceptée perd les données d'image et comporte une étape supplémentaire inutile. Voir la solution ci-dessous à la place: stackoverflow.com/a/38256612/5764320
Mycah

J'ai également créé un petit outil, où vous pouvez simplement faire glisser et déposer vos images et supprimer le canal alpha, sans perdre de données d'image: removealphachannel.com
Ali Nasserzadeh

Réponses:


48

En supposant que vous ne disposez pas d'un autre éditeur d'image, vous pouvez l'ouvrir dans Aperçu sur votre Mac et utiliser l'option Exporter pour le réenregistrer dans un format différent - pour vous assurer de vous débarrasser du canal alpha, il peut être préférable d'exporter en JPG (meilleure qualité), puis ouvrez-le et exportez-le à nouveau au format PNG.

Cela dit, je suppose que vous êtes probablement d'accord pour soumettre une icône avec un canal de transparence tant qu'il n'y a pas de transparence réelle.


9
Cela entraînera une petite perte de qualité, ainsi qu'un fichier PNG plus volumineux car le format PNG ne convient pas pour compresser le type d'artefacts que vous obtenez lors de la production d'un fichier JPG. De plus, Apple rejette les images PNG avec des canaux alpha même s'il n'y a pas de transparence réelle.
philwilks

J'ai essayé une ancienne version de macOS Sierra et cela a fonctionné.
Bhaumik Desai

9
Vous pouvez en fait simplement décocher la case "Alpha" lors de l'exportation au format PNG. Pas besoin d'exporter d'abord vers JPG.
Petr Peller

Comment faire une opération sur les données d'image pour réduire les canaux d'image de 4 à 3?
voldikss

5
Les fichiers PNG avec un canal de transparence ne seront pas acceptés, peu importe si la transparence apparaît dans l'image ou non.
gbarnett

237

La réponse acceptée pour exporter vers JPG, puis revenir en PNG n'est pas recommandée.

  • C'est une étape supplémentaire dans le processus (2 exportations)
  • JPG est avec perte, vous perdrez donc certaines données d'image

Voici un moyen très rapide et facile de le faire sans l'exportation supplémentaire ni l'enregistrement au format JPG (avec perte):

À l'aide de l'application Aperçu (Mac):

  1. Ouvrez l'image
  2. Commande-Shift-S pour dupliquer (crée une copie)
  3. Commande-S pour enregistrer
  4. Décochez la case "Alpha"
  5. Supprimer "copie" du nom de fichier (y compris l'espace)
    • Cela écrasera votre original, si vous souhaitez conserver l'original, laissez simplement «copie» dans le nom
  6. sauver
  7. Cliquez sur «Remplacer» pour confirmer que vous souhaitez écraser l'original
    • Uniquement nécessaire si vous écrasez votre original supprimer le canal alpha

2
^ c'est une meilleure réponse, à mon humble avis. JPG ne prend pas en charge les canaux alpha et cela vous permettra d'utiliser un format LOSSLESS et de gérer le canal alpha (au lieu de l'éviter).
Cody-PHP-jQuery

4
Je ne comprends pas pourquoi l'équipe de l'iTunes Store affiche cette erreur (canal Alpha) dans les icônes de l'application de la montre, alors que dans les versions précédentes, elle les considère comme correctes. Temps perdu! Merci Apple Inc!
Markus

Merci beaucoup pour la solution sans perte!
Shchvova

10
Avec macOS High Sierra, Preview semble toujours enregistrer les PNG AVEC un canal alpha, même si la case est décochée. Si j'ouvre le fichier enregistré, la boîte d'informations indique toujours "A Alpha: 1". L'outil Sips me le dit également hasAlpha: yes. De plus, iTunes Store se plaint du canal alpha indésirable («L'opération a échoué - L'icône de l'App Store… ne peut pas être transparente ni contenir un canal alpha»).
Stefan

2
Comme l'a mentionné @Psychomentally, ImageMagick a finalement fonctionné pour moi: convert in.png -alpha off out.png. Ré. Aperçu: l'activation / la désactivation de "alpha" dans la boîte de dialogue d'exportation modifie la taille de fichier prévue, mais l'enregistrement écrit toujours le fichier avec les informations alpha (et la taille correspondante).
Stefan

53

si vous avez besoin de supprimer tous les canaux alpha du répertoire avec des icônes, utilisez cette commande:

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

si vous avez Mac OS Mojave et que la "commande de conversion est introuvable"

brew install imagemagick

Pour installer Homebrew

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

1
cela donne une image de sortie 8 bits au lieu de 24 bits
Stepan Yakovenko

Si vous changez -alpha remove -alpha off $i;de -alpha remove -alpha off png24:$i; sortie sera un 24bit .png
Lawrence Davis Ryerson IV

37

Si vous utilisez l'application Aperçu, il n'est pas nécessaire d'exporter puis de réexporter entre jpg et png, choisissez simplement exporter et sous le type de fichier (PNG), vous verrez une case à cocher alpha, désactivez-la et enregistrez-la.


4
J'avais l'habitude d'utiliser cette méthode, mais sur MacOS High Sierra, décocher Alpha dans Aperçu ne fait rien à moins que vous ne choisissiez JPG comme sortie. Si j'essaye d'ouvrir un PNG, Exporter PNG sans Alpha, et ouvrir le nouveau PNG, il a un canal Alpha.
Dan Loughney

A travaillé pour moi à High Sierra (10.13.4)
fl034

13

Vous pouvez essayer imagemagick (également redimensionner facilement pour différentes tailles):

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

Comment sélectionner le fichier png sur 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: commande non trouvée
Marlhex

13

Il n'est pas nécessaire d'exporter d'abord l'image au format jpg. Vous pouvez décocher la case du canal alpha et exporter directement d'un png vers un png sans canal alpha dans l'application de prévisualisation.

entrez la description de l'image ici


9

Je viens de recevoir l'erreur suivante lors de la tentative de téléchargement de mon application sur l'App Store iTunes:

Échec des opérations de l'iTunes Store

ERREUR ITMS-90717: "Icône de l'App Store non valide. L'icône de l'App Store dans le catalogue d'actifs de" MyApp.app "ne peut pas être transparente ni contenir de canal alpha."

J'ai confirmé que les icônes de mon App Store incluaient le canal alpha en localisant l'élément dans le Finder et en recherchant ses informations (⌘ + i). Sous Plus d'informations, il a montré:

Canal alpha: Oui

J'ai trouvé la solution ci-dessus pour utiliser Aperçu pour supprimer le canal alpha en l'exportant avec la case Alpha décochée, mais j'ai trouvé un moyen de les exporter par lots puisque j'avais 18 actifs dont j'avais besoin pour supprimer le canal alpha.

La façon dont j'ai fait fonctionner l'exportation par lots consistait à sélectionner tous les éléments d'icône de mon application dans le Finder> clic droit> ouvrir (ou ouvrir avec aperçu)

Tous les actifs apparaîtront désormais dans la même fenêtre. Sélectionnez tout (⌘ + a), puis sélectionnez Fichier> Exporter les images sélectionnées…> Développer les options> décochez la case Alpha> Choisir (votre dossier de destination)

Terminé! Toutes vos images sont maintenant exportées avec le canal alpha supprimé.


1
J'ai essayé la même chose mais cela ne fonctionne plus sur High Sierra. Les canaux alpha ne sont pas supprimés lors de l'aperçu.
Satheeshwaran

6

Pour supprimer le canal alpha de png:

sur Mac: la version d'aperçu 9.0 (macOS Sierra) peut supprimer le canal alpha si vous exportez ou enregistrez l'image.

La version préliminaire 10.0 (944.2) (macOS High Sierra) ne supprime pas le canal alpha. L'exportation et / ou l'enregistrement ne suppriment pas le canal alpha de l'image.


2
Cela met en évidence 2 problèmes récents de facepalm par Apple .... High Sierra ignorant une option de sauvegarde ET la raison pour laquelle beaucoup de gens sont ici, Xcode ne peut soudainement pas télécharger d'applications en raison de la transparence des icônes
MobileVet

4

Ayant rencontré le même problème dans le contexte des applications Flutter, j'ai dédié un site Web simple à cette tâche où vous pouvez supprimer les canaux alpha des images:

Supprimer le canal alpha

Fondamentalement, j'exécute ImageMagick en utilisant Web Assembly directement dans le navigateur, donc aucune de vos images n'est téléchargée et vous n'avez besoin d'aucun autre outil comme Gimp.


2

la case à cocher alpha n'est plus là dans l'aperçu


Je peux toujours le voir et l'utiliser, vous devez exporter le fichier.
Oscar

2
Je peux appuyer ceci, c'est parti.
Wep0n

2

Eh bien, puisque vous êtes sur un Mac, la prochaine fois, vous voudrez probablement simplement utiliser Automator. Convertissez l'image en BMP (sans perte) et de nouveau en PNG. Laissez-le sauver et voila ...


0

J'ai mis la très belle solution de Nikita Pushkar dans un script shell qui convertit toutes les icônes iOS trouvées dans res/icon/ios:

Il utilise brew pour installer imagemagick s'il n'est pas disponible, donc je suppose qu'il ne fonctionnera que sur 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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.