Jeder weiß, wie man einen UIImage von einem anderen UIImage subtrahiert
zum Beispiel als dieser Bildschirm:
Danke für die Antwort!
Was bedeutet es, ein Bild zu subtrahieren? Das Beispielbild zeigt mehr von einer! roten Operation. Nehmen wir an, dass das Subtrahieren von Bild a von Bild b bedeutet, dass jedes Pixel in b, das ein Pixel in a schneidet, transparent ist. Um die Subtraktion durchzuführen, maskieren wir das Bild b auf das Inverse von Bild a. Ein guter Ansatz wäre also, eine Bildmaske aus dem Alpha-Kanal von Bild a zu erstellen und sie dann auf b anzuwenden. Um die Maske zu erstellen, würden Sie so etwas tun:
%Vor%puh. Um dann Bild b zu maskieren, müssen Sie nur noch:
%Vor%hey presto.
Ich glaube, Sie können dies erreichen, indem Sie den Mischmodus kCGBlendModeDestinationOut
verwenden. Erstellen Sie einen neuen Kontext, zeichnen Sie Ihr Hintergrundbild, und zeichnen Sie dann das Vordergrundbild mit diesem Mischmodus.
Um diese Ergebnisse zu erhalten, verwenden Sie das zweite Bild als Maske, wenn Sie das erste Bild zeichnen. Für diese Art der Zeichnung müssen Sie Core Graphics, alias Quartz 2D verwenden. Der Quartz 2D-Programmierleitfaden hat einen Abschnitt namens Bitmap-Bilder und Bildmasken , die Ihnen alles zeigen sollten, was Sie wissen müssen.
Sie fragen nach UIImage-Objekten, aber um Core-Grafiken zu verwenden, benötigen Sie stattdessen CGImages. Das ist kein Problem - UIImage bietet eine Eigenschaft CGImage
, mit der Sie die Daten, die Sie benötigen, einfach erhalten.
Tags und Links objective-c ios uiimage