Ersetzen Sie alle weißen / fast weißen Pixel in einem UIImage mit alpha CGImage mit?
-
26-09-2019 - |
Frage
habe ich eine UIImage mit weißen Hintergrund. Ich mag das weißen Hintergrund / Pixel mit alpha-transparenten Pixel ersetzen. Ich habe in anderen Fragen auf Stackoverflow sehe, zusammen mit Quarz-Dokumentation, habe aber noch einen kohärenten zu finden „start-to-End“ für dieses Problem. Wie wird das gemacht?
Lösung
CGImageCreateWithMaskingColors
Ein UIImage wickelt eine CGImage. Nehmen Sie die CGImage, führen Sie es durch CGImageCreateWithMaskingColors, dann entweder eine neue UIImage aus dem Ergebnis erstellen oder das Ergebnis zurück an den UIImage zuweisen.
Andere Tipps
Der erste Schritt ist es, Sie brauchen eine Art von „Distanz“ Funktion zu definieren, um zu bestimmen, wie weit entfernt ein Pixel aus weiss ist. Dann brauchen Sie einen Distanzschwelle zu definieren, unterhalb derer ein Pixel weiß betrachtet. Dann würden Sie über die Pixel des Bildes zu wiederholen müssen, keine Pixel zu ändern, die weiß betrachtet wurden nach Ihrer Entfernung und Schwelle, um transparent zu sein. Der wichtigste Trick, aber macht diese effizienten ... berührende Pixel durch Funktionen wird sehr langsam sein; Ihre beste Wette ist, um die Pixel directl durch den Zugang zu den Speicherpuffer, in dem die Pixel befinden und Schritt durch sie berühren.