So I found out how to create a totally new CGImage and then add the pixel data into that. This is what I have so far:
Code:
for (int index = 0; index < length; index += 4)
{
/*m_PixelBuf[index + 1] = 255 - m_PixelBuf[index + 1];
m_PixelBuf[index + 2] = 255 - m_PixelBuf[index + 2];
m_PixelBuf[index + 3] = 255 - m_PixelBuf[index + 3];
*/
m_PixelBuf[index + 1] = red2;
m_PixelBuf[index + 2] = green2;
m_PixelBuf[index + 3] = blue2;
//NSLog(@"lol");
}
//index+=4;
ctx = CGBitmapContextCreate(m_PixelBuf,
CGImageGetWidth( inImage ),
CGImageGetHeight( inImage ),
CGImageGetBitsPerComponent(inImage),
CGImageGetBytesPerRow( inImage ),
CGImageGetColorSpace( inImage ),
CGImageGetBitmapInfo(inImage) );
CGImageRef imageRef = CGBitmapContextCreateImage (ctx);
UIImage* rawImage = [UIImage imageWithCGImage:imageRef];
theimageView.image = rawImage;
CGContextRelease(ctx);
The code keeps on crashing without giving me an error and I can't find out why. Is it due to formats? My red2, green2, and blue2 are all unsigned int's and my m_PixelBuf is a UInt8 pointer. Here is the code where I initialized everything:
Code:
CGImageRef inImage = mycgImage;
CGContextRef ctx;
CFDataRef m_DataRef;
m_DataRef = CGDataProviderCopyData(CGImageGetDataProvider(inImage));
UInt8 *m_PixelBuf = (UInt8 *) CFDataGetBytePtr(m_DataRef);
// Byte tmpByte;
int length = CFDataGetLength(m_DataRef);