Sostituire tutti bianco / pixel quasi bianco in un'UIImage con alfa usando CGImage?
-
26-09-2019 - |
Domanda
Ho un UIImage con sfondo bianco. Desidero sostituire sfondo bianco / pixels pixel alfa-trasparente. Ho guardato le altre domande su StackOverflow, insieme con la documentazione al quarzo, ma devono ancora trovare un coerente "start-to-end" per questo problema. Come è questo fatto?
Soluzione
CGImageCreateWithMaskingColors
Un UIImage avvolge una CGImage. Prendere la CGImage, gestito attraverso CGImageCreateWithMaskingColors, quindi creare un nuovo UIImage dal risultato o assegnare la parte posteriore risultato al UIImage.
Altri suggerimenti
Il primo passo è necessario definire una sorta di funzione di "distanza" per determinare la distanza di un pixel è di essere bianco. Allora avete bisogno di definire una soglia di distanza sotto la quale un pixel è considerato bianco. Allora si avrebbe bisogno per scorrere i pixel dell'immagine, cambiando i pixel che sono stati considerati bianco in base alla distanza e la soglia, ad essere trasparente. Il trucco principale, però, sta facendo questo efficienti ... pixel toccando attraverso funzioni sarà molto lento; la soluzione migliore è quella di toccare il directl pixel per ottenere l'accesso al buffer di memoria in cui i pixel risiedono e fare un passo attraverso di loro.