CGImageCreateWithPNGDataProvider给予空白图像
问题描述:
请检查该代码,并帮助我,,,CGImageCreateWithPNGDataProvider给予空白图像
CGImageRef cRef = CGImageRetain(im.CGImage);
NSData* pixelData = (NSData*) CGDataProviderCopyData(CGImageGetDataProvider(cRef));
// return pointer to data
unsigned char* pixelBytes = (unsigned char *)[pixelData bytes];
// step through char data
for(int k = 0; k < [pixelData length]; k += 4) {
// change accordingly
pixelBytes[k] = pixelBytes[k];
pixelBytes[k+1] = pixelBytes[k+1];
pixelBytes[k+2] = pixelBytes[k+2];
pixelBytes[k+3] = 255;
}
NSData* newPixelData = [NSData dataWithBytes:pixelBytes length:[pixelData length]];
CFDataRef imgData = (CFDataRef)pixelData;
CGDataProviderRef imgDataProvider = CGDataProviderCreateWithCFData(imgData);
CGImageRef throughCGImage = CGImageCreateWithPNGDataProvider(imgDataProvider, NULL, YES, kCGRenderingIntentDefault);
UIImage* newImage = [UIImage imageWithCGImage:throughCGImage];
NSLog(@"newImage: %@", newImage);
一些数据来了,但它没有被添加到该UIImageView..it是显示空白。
答
问题0)
您正在修改不可变数据,这应该是未定义的行为。
问题1)
反正,一个PNG是一个真正的文件格式,而不是一个位图的斑点具有固定样本格式。 PNG可以用多种方式表示图像 - 您的程序只是覆盖好数据。