iOS:如何通过手指触摸将图像灰度转换为原始灰度?

时间:2014-08-01 11:02:36

标签: ios image bitmap

首先,我将原始图像转换为灰度并成功转换。但问题是,如何通过用户触摸该位置将灰度转换回原始图像。 我无法理解的是如何将 **灰度转换为原始 **。

这是我的代码** 原件到灰度 **

- (UIImage *)convertImageToGrayScale:(UIImage *)image
{
    CGRect imageRect = CGRectMake(0, 0, image.size.width, image.size.height);
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
    CGContextRef context = CGBitmapContextCreate(nil, image.size.width, image.size.height, 8, 0, colorSpace, kCGImageAlphaNone);
    CGContextDrawImage(context, imageRect, [image CGImage]);
    CGImageRef imageRef = CGBitmapContextCreateImage(context);
    UIImage *newImage = [UIImage imageWithCGImage:imageRef];
    CGColorSpaceRelease(colorSpace);
    CGContextRelease(context);
    CFRelease(imageRef);
    return newImage;
}

需要指导。提前谢谢。

2 个答案:

答案 0 :(得分:1)

由于图像数据中不再有任何颜色信息,因此无法将灰度图像转换回颜色。

如果你的意思是你有一个彩色图像,你正在转换为灰度,然后当用户点击你显示一个颜色版本,那么你需要挂在原始图像上并显示一个彩色图像。

答案 1 :(得分:0)

我正在使用98 x 98像素的修正尺寸图像。我最终做的是在Photoshop中创建一个空白98乘98 png并将其命名为rgboverlay.png。然后我只是将我的灰度图像叠加在空白图像上,得到的图像是RGB。这是代码。我最初得到的代码将一个图像覆盖在另一个图像上。

originalimage =你的灰度图像

static UIImage* temp = nil;
thumb = [UIImage imageNamed:@"rgboverlay.png"];
CGSize size = CGSizeMake(98, 98);
UIGraphicsBeginImageContext(size);
CGPoint tempPoint = CGPointMake(0, 25 - temp.size.height / 2);
[temp drawAtPoint:testPoint];
CGPoint starredPoint = CGPointMake(1, 1);
[originalimage drawAtPoint:starredPoint];
// result is the new RGB image
result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

这最终为我工作。