Я пытаюсь создать специальные пользовательские эффекты фильтра для изображения для iOS. До сих пор я пытался получать необработанные данные с помощью CGBitmapContextCreate. Тем не менее, я действительно не знаю, как изменить мои rawData. Я надеюсь выполнить на нем расчеты. Надеюсь, что пиксель за пикселем с rawData, но я не знаю, как его манипулировать.Как выполнить вычисления с исходными данными изображения с помощью CoreGraphics?
Я также не знаю, как я могу нарисовать свой растровый контекст для 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);