iPhone - Sostituzione di un blocco di pixel in un'immagine con un altro blocco di pixls
-
25-09-2019 - |
Domanda
vorrei sapere se qualcuno mi può puntare nella giusta direzione per quanto riguarda ciò quadri / metodi ad uso quando si sostituisce un blocco di pixel in un'immagine con un altro blocco di pixel.
Per esempio Diciamo che ho una semplice immagine colorata completamente rosso e ritengo la mia dimensione del blocco di pixel da 5x5 pixel. Ora ogni 3 blocchi Voglio sostituire il 3 ° blocco con un blocco di colore blu (5x5 pixel) in modo che si tradurrebbe in un'immagine rosso con blocchi blu che appaiono ogni 3 blocchi rossi.
ho trovato informazioni per quanto riguarda la sostituzione dei pixel, ma sto cercando di capire come determinare e blocchi di pixel di processo. Tutto il consiglio sarebbe apprezzato .. e tutto il codice sarebbe un sogno bagnato.
Soluzione
Anche se può sembrare una semplice domanda, non è abbastanza facile da fare una cosa del genere. Avete bisogno di un sacco di informazioni di base per ottenere tutto ciò che accade. Dipende anche in cui l'immagine viene, e che cosa si vuole fare con esso.
Non vi fornirà un esempio di lavoro, ma ecco alcune indicazioni:
La lettura di un'immagine:
UIImage *img = [UIImage imageNamed:@"myimage.png"];
// make sure you added myimage.png to your project
Creare il "contesto grafico" proprie di attingere a:
UIGraphicsBeginImageContext(CGSizeMake(480.0f, 320.0f)); // the size (width,height)
CGContextRef ctx = UIGraphicsGetCurrentContext();
Dipingere l'immagine sul vostro contesto (corrente):
[img drawAtPoint:CGPointMake(0.0f, -480.0f)]; // (draws on current context)
Facendo qualche altro dipinto:
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
La trasformazione del contesto bitmap a un'immagine di nuovo:
UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
E poi, sia:
Mostra l'immagine al pubblico, all'interno di un controller della vista:
[self.view addSubview:[[[UIImageView alloc] initWithImage:resultImage] autorelease]];
o scrivere l'immagine come jpeg:
NSData *imagedata = UIImageJPEGRepresentation(img,0.8); // 0.8 = quality
[imagedata writeToFile:filename atomically:NO];
O come PNG:
NSData *imagedata = UIImagePNGRepresentation(img);
[imagedata writeToFile:filename atomically:NO];
Per questi ultimi si avrebbe bisogno di avere un nome di file, che non è così banale sia (dato l'ambiente in cui vivi telefono). Questo è un altro argomento su cui si trova un sacco, la ricerca di cose come:
NSArray *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *filename = [[path elementAtIndex:0] stringByAppendingPathComponent:@"myimage.png"];
Questo è il quadro generale, forse avrei fatto alcuni errori, ma questo dovrebbe farti andare almeno.