我想知道如果有人能在正确的方向指向我就什么框架/方法 到使用的图像与另一个像素块替换的像素块时。

举例来说可以说我有颜色的简单图像全红,我认为我的像素块的大小为5×5 像素。现在每3个街区,我想用一个蓝色的块来代替第三块(5×5像素)等等 它会导致与出现每3红色块蓝色块红色图像。

我发现关于像素替换的信息,但我试图找出如何确定和处理像素块。任何意见,将不胜感激..和任何代码将是一场春梦。

有帮助吗?

解决方案

虽然这听起来像一个简单的问题,这不是很容易做这样的事情。你需要大量的背景信息来获得一切顺利。这也取决于在图像来自于,你想用它做什么。

我不会为你提供工作的例子,但这里的一些提示:

读取的图像中:

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

创建自己的“图形上下文”借鉴:

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

绘画图像到您的(当前)上下文:

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

做一些其他的绘画:

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

再次转化的位图上下文到图像:

UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();

然后,无论是:

显示图像给观众,从一个视图控制器内:

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

或写图像作为JPEG:

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

或者作为PNG:

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

对于那些你需要有一个文件名,这是不那么微不足道或者(给你生活的环境电话)最后的。这是对你会发现很多,搜索之类的另一个话题:

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

这是一般的轮廓,我可能已经取得了一些错误,但这个应该让你至少去。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top