Я пытаюсь создать специальные пользовательские эффекты фильтра для изображения для iOS.До сих пор я пытался получить необработанные данные, используя CGBitmapContextCreate.Тем не менее, я не имею ни малейшего представления о том, как изменить мои rawData.Я надеюсь выполнить вычисления на этом.Я надеюсь обработать пиксель за пикселем с помощью rawData, но я не знаю, как им манипулировать.
Я также не знаю, как я могу нарисовать свой растровый контекст в UIImage, чтобы я мог отобразить готовый продуктна UIImageView.
Может ли кто-нибудь дать мне несколько советов, как мне этого добиться?
Вот мой код:
// First get the image into your data buffer
CGImageRef imageRef = imageView.image.CGImage;
NSUInteger width = CGImageGetWidth(imageRef);
NSUInteger height = CGImageGetHeight(imageRef);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
unsigned char *rawData = calloc(height * width * 4, sizeof(unsigned char));
NSUInteger bytesPerPixel = 4;
NSUInteger bytesPerRow = bytesPerPixel * width;
NSUInteger bitsPerComponent = 8;
CGContextRef context = CGBitmapContextCreate(rawData, width, height,
bitsPerComponent, bytesPerRow, colorSpace,
kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGColorSpaceRelease(colorSpace);
CGContextDrawImage(context, CGRectMake(0, 0, width, height), imageRef);
//perform calculations on rawData? or context? not sure!! i hope to effect pixel by pixel.
//am i doing this correctly?
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//set the imageview with the new image
[imageView setImage:newImage];
CGContextRelease(context);