Преобразование изображения в черно-белое изображение, сепия, серый и т. Д. В iPhone SDK - PullRequest
2 голосов
/ 23 декабря 2011

Я искал в Google, получаю ли я что-то для добавления эффекта к изображению, например Black & White, Sepia, grayScale и т. Д. Я нашел полезную ссылку для преобразования изображения в Sepia, но дляпреобразуя его в черно-белый или в оттенки серого.

Вот ссылка http://groups.google.com/group/iphonesdkdevelopment/browse_thread/thread/b987b02deec08b9f

Пройдя через код, я узнаю, что для этого нам нужно изменить RBG, но Как получить RBG для B&W и grayScale.Какой будет коэффициент RBG для такого рода эффектов.

Любая помощь будет признательна.

Заранее спасибо

Ответы [ 2 ]

4 голосов
/ 28 декабря 2012

Вы можете получить черно-белое изображение по

-(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 голос
/ 23 декабря 2011

Вы должны сделать это так же, как указано в ссылке (группы Google).

Кроме того, вы можете найти логику в этой ссылке , чтобы преобразовать их в grayScale.

Надеюсь, это поможет вам.

...