4 Stimmen

iPhone SDK Invertieren der Farben eines UII-Bildes

Ich habe eine iPhone-App, mit der man mit dem Finger etwas auf den Bildschirm zeichnen kann. Sie zeichnen mit einer weißen Linie auf einem schwarzen Hintergrund. Wenn ich dieses Bild jedoch auf den Webserver hochlade, ist die Linie selbst weiß. Ich habe versucht, die Kern-Grafikbibliotheken durchzuarbeiten, um einen Weg zu finden, die Farbe des gezeichneten Bildes zu invertieren. Es ist kein Hintergrund eingestellt, also sollte es transparent sein. Eine Bildinvertierung sollte das Weiß in Schwarz umwandeln.

Weiß jemand, ob dies über die Core-Grafikbibliothek möglich ist?

Prost

14voto

user273169 Punkte 181

Ich habe schließlich eine gute Lösung gefunden. Anstatt den Hintergrund des Originalbildes einfach transparent zu machen, habe ich ihn schwarz gemacht. Jetzt gibt es weiße Linien auf einem schwarzen Hintergrund. Dann war es nur noch eine Frage der Ausführung:

UIGraphicsBeginImageContext(image.size);
CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeCopy);
[image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];
CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeDifference);
CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(),[UIColor whiteColor].CGColor);
CGContextFillRect(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, image.size.width, image.size.height));
UIImage *returnImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

Die Variable "image" ist das Originalbild mit weißer Linie auf schwarzem Hintergrund. Vielen Dank für Ihre Hilfe David Sowsy

-1voto

David Sowsy Punkte 1680

Ja. Sie sollten in der Lage sein, dies in einem CALayer durch die Aufrufe von CGContext zu tun, oder direkt mit einem Puffer auf CGImage. Es gibt auch andere Beispiele auf Stackoverflow, wie man mit Save Image aus einer UIView hin und her geht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X