Frage

Ich möchte wissen, ob jemand mich in die richtige Richtung in Bezug auf welche Frameworks / Methoden zeigen können Gebrauch, wenn sie mit einem anderen Pixelblock einen Block von Pixeln in einem Bild zu ersetzen.

Zum Beispiel kann sagen, ich habe ein einfaches Bild vollständig rot gefärbt und ich meine Pixelblockgröße als 5x5 betrachten Pixel. Jetzt alle 3 Blöcke möchte ich den dritten Block mit einem blauen farbigen Block (5x5 Pixel) so ersetzen, dass es in einem roten Bild mit blauen Blöcken erscheinen alle drei roten Blöcke führen würde.

Ich habe Informationen über Pixel Ersatz gefunden, aber ich versuche, herauszufinden, wie zu ermitteln und zu verarbeiten Pixelblocks. Jede Beratung würde geschätzt .. und jeder Code wäre ein feuchter Traum sein.

War es hilfreich?

Lösung

Auch wenn es wie eine einfache Frage klingen mag, ist es nicht ganz einfach, so etwas zu tun. Sie brauchen eine Menge Hintergrundinformationen, um alles in Gang zu bringen. Es hängt auch davon ab, wo das Bild kommt, und was wollen Sie damit zu tun.

Ich werde Sie nicht mit einem Arbeitsbeispiel liefern, aber hier ist einige Hinweise:

in einem Bild Lesen:

UIImage *img = [UIImage imageNamed:@"myimage.png"];
// make sure you added myimage.png to your project

Erstellen eines eigenen „Grafikkontext“ auf zeichnen:

UIGraphicsBeginImageContext(CGSizeMake(480.0f, 320.0f)); // the size (width,height)
CGContextRef ctx = UIGraphicsGetCurrentContext();

Malerei Ihres Bildes auf Ihren (aktuellen) Kontext:

[img drawAtPoint:CGPointMake(0.0f, -480.0f)]; // (draws on current context)

Doing einige andere Gemälde:

CGContextBeginPath(ctx); // start a path
CGContextSetRGBStrokeColor(ctx,1,0,0,1); // red,green,blue,alpha with range 0-1
CGContextMoveToPoint(ctx,50,0); // move to beginning of path at point (50,0)
CGContextAddLineToPoint(ctx,100,100); // add a line to point (100,100)
CGContextStrokePath(ctx); // do the drawing

Umwandlung der Bitmap-Kontext zu einem Bild wieder:

UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();

Und dann entweder:

Zeigen Sie das Bild an das Publikum, aus einem View-Controller:

[self.view addSubview:[[[UIImageView alloc] initWithImage:resultImage] autorelease]];

Oder schreiben Sie das Bild als JPEG:

NSData *imagedata = UIImageJPEGRepresentation(img,0.8); // 0.8 = quality
[imagedata writeToFile:filename atomically:NO];

oder als PNG:

NSData *imagedata = UIImagePNGRepresentation(img);
[imagedata writeToFile:filename atomically:NO];

Für die letzten, die Sie benötigen, um einen Dateinamen haben, die nicht so trivial ist entweder (angesichts der Telefonumgebung Sie wohnen). Das ist ein anderes Thema, zu dem Sie eine Menge finden, suchen für Dinge wie:

NSArray *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *filename = [[path elementAtIndex:0] stringByAppendingPathComponent:@"myimage.png"];

Dies ist der allgemeine Umriss, könnte ich einige Fehler gemacht haben, aber dies sollte man zumindest bekommen würde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top