Question

Je voudrais savoir si quelqu'un peut me diriger dans la bonne direction en ce qui concerne ce que les cadres / méthodes à utiliser lors du remplacement d'un bloc de pixels dans une image avec un autre bloc de pixels.

Par exemple permet de dire que je suis une simple image de couleur entièrement rouge et je considère ma taille de bloc de pixel 5x5 pixels. Maintenant, tous les 3 blocs que je veux remplacer le 3ème bloc avec un bloc de couleur bleu (5x5 pixels) afin qu'il entraînerait une image rouge avec des blocs bleus apparaissant tous les 3 blocs rouges.

J'ai trouvé des informations sur le remplacement des pixels, mais essaie de comprendre comment déterminer et blocs de pixels de processus. Tout conseil serait apprécié .. et tout code serait un rêve humide.

Était-ce utile?

La solution

Bien qu'il puisse sembler une simple question, il est pas tout à fait facile de faire quelque chose comme ça. Vous avez besoin d'un grand nombre d'informations de fond pour obtenir tout ce qui passe. Elle dépend aussi de l'endroit où l'image vient, et ce que vous voulez faire.

Je ne vais pas vous donner un exemple de travail, mais voici quelques conseils:

Lecture dans une image:

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

Créer votre propre « contexte graphique » pour dessiner sur:

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

Peindre votre image sur votre (actuelle) contexte:

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

Faire un autre tableau:

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

Transformer le contexte de bitmap à une image encore:

UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();

Et puis, que ce soit:

Afficher l'image au public, à partir d'un contrôleur de vue:

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

Ou écrire l'image jpeg:

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

Ou comme PNG:

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

Pour ces derniers, vous devez avoir un nom de fichier, ce qui est pas si trivial soit (compte tenu de l'environnement de téléphone que vous vivez). C'est un autre sujet sur lequel vous trouverez beaucoup, rechercher des choses comme:

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

Voici le plan général, je pourrais avoir fait quelques erreurs, mais cela devrait vous y aller au moins.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top