2012-08-16 66 views
1

请检查该代码,并帮助我,,,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是显示空白。

回答

1

问题0)

您正在修改不可变数据,这应该是未定义的行为。

问题1)

反正,一个PNG是一个真正的文件格式,而不是一个位图的斑点具有固定样本格式。 PNG可以用多种方式表示图像 - 您的程序只是覆盖好数据。