2012-08-16 80 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可以用多種方式表示圖像 - 您的程序只是覆蓋好數據。