在iPhone SDK中将图像转换为B& W,sepia,GrayScale等

时间:2011-12-23 07:17:57

标签: iphone objective-c image-processing uiimage

我正在谷歌上搜索,如果我得到的内容可以为图片添加效果,例如Black & WhiteSepiagrayScale等。我找到了一个有用的链接,用于在{{转换图像1}}但是没有什么可以用B& W或灰度转换它。

以下是链接http://groups.google.com/group/iphonesdkdevelopment/browse_thread/thread/b987b02deec08b9f

在完成代码后,我知道我们需要为此更改RBG,但如何获取SepiaB&W的RBG。这些影响的RBG比率是多少。

任何帮助都将受到赞赏。

提前致谢

2 个答案:

答案 0 :(得分:4)

你可以通过

获得B& W图像
-(UIImage *)convertOriginalImageToBWImage:(UIImage *)originalImage
{
UIImage *newImage;

CGColorSpaceRef colorSapce = CGColorSpaceCreateDeviceGray();
CGContextRef context = CGBitmapContextCreate(nil, originalImage.size.width * originalImage.scale, originalImage.size.height * originalImage.scale, 8, originalImage.size.width * originalImage.scale, colorSapce, kCGImageAlphaNone);
CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
CGContextSetShouldAntialias(context, NO);
CGContextDrawImage(context, CGRectMake(0, 0, originalImage.size.width, originalImage.size.height), [originalImage CGImage]);

CGImageRef bwImage = CGBitmapContextCreateImage(context);
CGContextRelease(context);
CGColorSpaceRelease(colorSapce);

UIImage *resultImage = [UIImage imageWithCGImage:bwImage];
CGImageRelease(bwImage);

UIGraphicsBeginImageContextWithOptions(originalImage.size, NO, originalImage.scale);
[resultImage drawInRect:CGRectMake(0.0, 0.0, originalImage.size.width, originalImage.size.height)];
newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();


return newImage;
}

答案 1 :(得分:1)

您需要这样做与链接(谷歌群组)中给出的方式相同。

此外,您可以在this link中找到逻辑,将它们转换为grayScale。

希望这会对你有所帮助。