Usando GIMP, puoi "cancellare" un colore?


9

Attualmente sto lavorando su un'applicazione iOS e sto tentando di decodificare la loro finestra di dialogo di avviso standard. Sono riuscito a capire quale sia il valore alfa sullo sfondo che utilizza attraverso un campionamento del colore rispetto a una vista nera solida e una vista bianca solida.

Date queste informazioni, usando GIMP è possibile semplicemente "cancellare" il colore di sfondo, in modo che io rimanga solo con lo sfondo di avviso originale, non prestato?

Ho solo la vista di avviso in forma di immagine come uno screenshot di un'app in esecuzione.

Risposte:


8

Si è possibile. Lasciatemi delineare come è fatto, usando questa immagine di Wikimedia Commons (di ed_g2s , con licenza CC-By-SA 3.0 ) come esempio:

Immagine dimostrativa di trasparenza PNG di ed_g2s, concessa in licenza come CC-By-SA 3.0

  1. Apri le versioni di sfondo in bianco e nero come livelli della stessa immagine (usando Apri come livelli ... o semplicemente apri entrambi e copia e incolla l'uno nell'altro). Sposta il livello bianco sopra il livello nero se non è già così. I due strati dovrebbero assomigliare a questo:

    Immagine dimostrativa con sfondo nero Immagine dimostrativa con sfondo bianco

  2. Prendi la differenza dei livelli: clona il livello nero (ne avrai bisogno in seguito), cambia la modalità del livello del livello bianco in "differenza" e fondilo. Invertire il risultato. Questo ti dà il canale alfa dell'immagine originale.

    Canale alfa ricostruito

    Modifica: se gli sfondi non sono in bianco e nero, il livello di differenza invertito non avrà uno sfondo nero. Per risolvere il problema, desaturare innanzitutto il livello (utilizzando la modalità che offre il miglior contrasto), quindi utilizzare Colori → Auto → Normalizzazione per rendere nero lo sfondo. Puoi anche usare il Mixer di canali , ma è un po 'più complicato da usare.

    (La normalizzazione sopra funziona se il canale alfa che stai ricreando ha almeno alcune parti con opacità al 100%; se l'immagine che stai ricreando è ovunque traslucida, puoi usare Colori → Livelli ... per impostare invece solo il punto nero. )

    Se non ne hai già uno, devi anche creare una versione della tua immagine con uno sfondo nero per il passaggio successivo. Per fare ciò, utilizzare i seguenti passaggi aggiuntivi:

    • Scegli la versione originale con lo sfondo più scuro. Crea un nuovo livello sopra di esso riempito con il suo colore di sfondo.
    • Clonare il livello di differenza e capovolgerlo in modo che abbia uno sfondo bianco. Posiziona questo livello sopra il nuovo colore a tinta unita che hai appena creato, imposta la sua modalità di livello su "moltiplica" e fondila.
    • Infine, modifica la modalità del livello risultante in "sottrazione" e fondila sul livello con l'immagine originale. Questo dovrebbe sottrarre lo sfondo originale, lasciandoti con l'immagine su uno sfondo nero.
  3. Se stessimo usando un formato immagine con alfa pre-moltiplicata, avremmo più o meno finito ora. Ma dal momento che non lo siamo, dobbiamo ancora moltiplicare i canali RGB. Per fare ciò, clonare il livello alfa che abbiamo creato nel passaggio precedente (o semplicemente copiarlo negli Appunti), impostare la modalità del livello su "dividi" e fonderlo con il livello di sfondo nero clonato prima del passaggio 2. Il risultato dovrebbe apparire così (confronta con la versione originale di sfondo nero per vedere la differenza):

    Canali RGB de-moltiplicati

  4. Ora, aggiungi una maschera di livello al livello risultante, seleziona la maschera e incolla il livello alfa in esso. Il risultato dovrebbe ora apparire più o meno come l'immagine trasparente originale. Infine, per trasformare la maschera in un canale alfa adeguato, puoi applicarla (ma l'esportazione PNG di GIMP lo farà anche se non lo fai). Ed ecco fatto: un PNG trasparente ricostruito pronto all'uso:

    Immagine ricostruita con trasparenza

Naturalmente, questa tecnica richiede davvero di avere versioni dell'immagine sul puro sfondi bianchi in bianco e puro. Se gli sfondi sono un po 'spenti, potrebbero essere ancora utilizzabili metodi simili, ma potrebbe essere necessario eseguire ulteriori regolazioni del colore e i risultati potrebbero non essere così perfetti. ( Modifica: vedere le aggiunte al passaggio 2 sopra. Le istruzioni modificate dovrebbero funzionare con sfondi di qualsiasi colore, purché siano colori solidi.)


Ps. GIMP ha anche una funzione "Cancella colore" (come modalità di fusione per lo strumento Riempi secchio, o come Colore in alfa ... per l'intera immagine), che è utile per ricostruire la trasparenza quando hai una sola versione dell'immagine su uno sfondo a tinta unita. Tuttavia, a meno che non venga usato con attenzione, tende a produrre output piuttosto più trasparenti di quanto si vorrebbe che fosse .

Pps. Se confronti le immagini originali e ricostruite con molta attenzione, vedrai che non sono esattamente identici: alcuni valori di colore sono disattivati ​​di 1/256 o giù di lì. Questo è dovuto al modo in cui funziona la modalità di livello "divide" di GIMP : piuttosto che calcolare il vero inverso della moltiplicazione alfa, che sarebbe output = (255 × input ) / layer , in realtà calcola output = (256 × input ) / ( layer+ 1). Questa discrepanza, che è apparentemente fatta per evitare la divisione per zero, significa che alcuni dei colori possono arrotondare a un valore leggermente diverso da quello che dovrebbero. Ahimè, non conosco alcun modo per aggirare questo, oltre a patchare GIMP, scrivere un plugin per fare la divisione nel modo in cui lo vogliamo, o usare qualche altro programma. Fortunatamente, tuttavia, la differenza di colore è raramente se mai effettivamente percepibile dall'occhio umano.

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.