首先,我将原始图像转换为灰度并成功转换。但问题是,如何通过用户触摸该位置将灰度转换回原始图像。 我无法理解的是如何将 **灰度转换为原始 **。
这是我的代码** 原件到灰度 **
- (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;
}
需要指导。提前谢谢。
答案 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();
这最终为我工作。