Pregunta

Me gustaría saber si alguien me puede apuntar en la dirección correcta con respecto a qué marcos / métodos para su uso cuando la sustitución de un bloque de píxeles de una imagen con otro bloque de píxeles.

Por ejemplo digamos que tengo una imagen simple de color rojo y totalmente Considero que mi tamaño de bloque de píxeles como 5x5 píxeles. Ahora cada 3 bloques que desea reemplazar el 3er bloque con un bloque de color azul (5x5 píxeles) por lo que resultaría en una imagen roja con bloques de color azul que aparecen cada 3 bloques de color rojo.

he encontrado información sobre el reemplazo de píxeles, pero estoy tratando de encontrar la manera de determinar y bloques de píxeles proceso. Cualquier consejo sería apreciado .. y cualquier código sería un sueño húmedo.

¿Fue útil?

Solución

A pesar de que puede sonar como una pregunta simple, no es muy fácil de hacer algo por el estilo. Se necesita una gran cantidad de información de antecedentes para obtener todo lo que sucede. También depende de donde la imagen viene, y lo que quiere hacer con él.

No voy a ofrecerle un ejemplo de trabajo, pero aquí hay algunas sugerencias:

La lectura en una imagen:

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

La creación de su "contexto gráfico" propios para dibujar en:

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

Pintura su imagen en su contexto (actual):

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

Haciendo un poco de otra pintura:

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 transformación del contexto de mapa de bits a una imagen de nuevo:

UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();

Y a continuación, ya sea:

Mostrar la imagen al público, desde dentro de un controlador de vista:

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

O escribir la imagen como JPEG:

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

O como PNG:

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

Para los últimos que tendría que tener un nombre de archivo, lo que no es tan trivial (dado el entorno de teléfono al que vive). Ese es otro tema en el que encontrará una gran cantidad, buscar cosas como:

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

Este es el esquema general, podría haber cometido algunos errores, pero esto debe conseguir que ir por lo menos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top