À l'aide de GIMP, pouvez-vous «effacer» une couleur?

9

Je travaille actuellement sur une application iOS et j'essaie de désosser leur fenêtre de dialogue d'alerte standard. J'ai réussi à comprendre quelle est la valeur alpha sur l'arrière-plan qu'il utilise grâce à un échantillonnage de couleurs par rapport à une vue noire unie et une vue blanche unie.

Compte tenu de ces informations, l'utilisation de GIMP est-il possible de simplement "effacer" la couleur d'arrière-plan, de sorte qu'il ne me reste que l'arrière-plan d'alerte non mélangé d'origine?

Je n'ai que la vue des alertes sous forme d'image en tant que capture d'écran d'une application en cours d'exécution.

Dan F
la source

Réponses:

8

Oui c'est possible. Permettez-moi de décrire comment cela se fait, en utilisant cette image de Wikimedia Commons (par ed_g2s , sous licence CC-By-SA 3.0 ) comme exemple:

Image de démonstration de transparence PNG par ed_g2s, sous licence CC-By-SA 3.0

  1. Ouvrez les versions d'arrière-plan noir et blanc en tant que couches de la même image (en utilisant Ouvrir en tant que couches ... ou ouvrez simplement les deux et copiez-collez l'une dans l'autre). Déplacez le calque blanc au-dessus du calque noir si ce n'est pas déjà le cas. Les deux couches devraient ressembler à ceci:

    Image de démonstration avec fond noir Image de démonstration avec fond blanc

  2. Prenez la différence des calques: clonez le calque noir (vous en aurez besoin plus tard), changez le mode de calque du calque blanc en "différence" et fusionnez-le. Inversez le résultat. Cela vous donne le canal alpha de l'image d'origine.

    Canal alpha reconstruit

    Modifier: si vos arrière-plans ne sont pas en noir et blanc, le calque de différence inversé n'aura pas d'arrière-plan noir. Pour résoudre ce problème, désaturez d'abord le calque (en utilisant le mode qui vous donne le meilleur contraste), puis utilisez Couleurs → Auto → Normaliser pour rendre l'arrière-plan noir. Vous pouvez également utiliser le mélangeur de canaux place, mais c'est un peu plus difficile à utiliser.

    ( Normaliser ci-dessus fonctionne si le canal alpha que vous recréez a au moins certaines parties avec une opacité de 100%; si l'image que vous recréez est partout translucide, vous pouvez utiliser Couleurs → Niveaux ... pour définir uniquement le point noir à la place. )

    Si vous n'en avez pas déjà, vous devez également créer une version de votre image avec un fond noir pour l'étape suivante. Pour ce faire, utilisez les étapes supplémentaires suivantes:

    • Choisissez la version originale qui a le fond le plus sombre. Créez un nouveau calque au-dessus, rempli de sa couleur d'arrière-plan.
    • Clonez le calque de différence et réinversez-le afin qu'il ait un fond blanc. Placez ce calque au-dessus du nouveau de couleur unie que vous venez de créer, réglez son mode de calque sur "multiplier" et fusionnez-le.
    • Enfin, changez le mode du calque résultant en "soustraire" et fusionnez-le sur le calque avec l'image d'origine. Cela devrait soustraire l'arrière-plan d'origine, vous laissant l'image sur un fond noir.
  3. Si nous utilisions un format d'image avec alpha pré-multiplié, nous aurions plus ou moins terminé maintenant. Mais comme nous ne le sommes pas, nous devons encore démultiplier les canaux RVB. Pour ce faire, clonez le calque alpha que nous avons créé à l'étape précédente (ou copiez-le simplement dans le presse-papiers), définissez son mode de calque sur "diviser" et fusionnez-le avec le calque de fond noir que vous avez cloné avant l'étape 2. Le résultat devrait ressembler à ceci (comparer avec la version originale sur fond noir pour voir la différence):

    Canaux RVB démultipliés

  4. Maintenant, ajoutez un masque de calque au calque résultant, sélectionnez le masque et collez-y le calque alpha. Le résultat devrait maintenant ressembler plus ou moins à l'image transparente d'origine. Enfin, pour transformer le masque en un canal alpha approprié, vous pouvez l'appliquer (mais l'exportation PNG de GIMP le fera pour vous même si vous ne le faites pas). Et voilà - un PNG transparent reconstruit prêt à l'emploi:

    Image reconstruite avec transparence

Bien sûr, cette technique nécessite vraiment que vous ayez des versions de l'image sur un fond noir pur et blanc pur. Si les arrière-plans sont un peu décalés, des méthodes similaires peuvent toujours être utilisées, mais vous devrez peut-être effectuer des ajustements de couleurs supplémentaires et les résultats peuvent ne pas être aussi parfaits. ( Modifier: voir les ajouts à l'étape 2 ci-dessus. Les instructions modifiées doivent fonctionner avec des arrière-plans de n'importe quelle couleur, tant qu'ils sont de couleur unie.)


Ps. GIMP dispose également d'une fonction "Effacement des couleurs" (en tant que mode de fusion pour l'outil Remplissage du seau ou en tant que couleur vers alpha ... pour l'image entière), qui est utile pour reconstruire la transparence lorsque vous n'avez qu'une seule version de l'image sur un fond de couleur unie. Cependant, à moins d'être utilisé avec soin, il a tendance à produire une sortie qui est plutôt plus transparente que vous ne le souhaiteriez probablement .

Pps. Si vous comparez très soigneusement les images originales et reconstruites, vous verrez qu'elles ne sont pas exactement identiques - certaines valeurs de couleur sont décalées de 1/256 environ. C'est à cause de la façon dont fonctionne le mode de calque «diviser» de GIMP : plutôt que de calculer l'inverse réel de la multiplication alpha, qui serait sortie = (255 × entrée ) / couche , il calcule en fait la sortie = (256 × entrée ) / ( couche+ 1). Cette non-concordance, qui est ostensiblement effectuée pour éviter la division par zéro, signifie que certaines des couleurs peuvent arrondir à une valeur légèrement différente de ce qu'elles devraient. Hélas, je ne connais aucun moyen de contourner cela, à part patcher GIMP, écrire un plugin pour faire la division comme nous le voulons, ou utiliser un autre programme. Heureusement, cependant, la différence de couleur est rarement, voire jamais, perceptible par l'œil humain.

Ilmari Karonen
la source