2010-05-13 28 views
2

我有一個UIImage,我想編輯(比如,使每第二行像素黑色)。現在我知道從圖像中提取PNG或JPEG數據的功能,但這是原始數據,我不知道png/jpeg文件如何工作。有沒有一種方法可以將每個像素的顏色數據提取到數組中?然後使用數組中的數據創建一個新的UIImage?編輯UIImage

回答

1

這是我花了做同樣的事情(這爲8位位圖背景灰度圖沒有alpha步驟:

// Allocate memory for image data. 
bitmapData = malloc(bitmapByteCount); 

// Use the generic Grey color space. 
colorSpace = CGColorSpaceCreateDeviceGray(); 

// Create the bitmap context. 
context = CGBitmapContextCreate (bitmapData, pixelsWide, pixelsHigh, 8, bitmapBytesPerRow, colorSpace, kCGImageAlphaNone); 

現在它說,在文檔中,你可以傳遞NULL到BitmapData參數和有該方法處理的內存中的所有malloc'ing。我發現,如果你這樣做,你不能再使用CGBitmapContextGetData得到的指針要經過字節的數據。

// Draw the image into the context 
CGContextDrawImage(context, CGRectMake(0, 0, pixelsWide, pixelsHigh), imageRef); 

要閱讀在像素我在數據中的位置,使用:

unsigned char *pointerToPixelData = CGBitmapContextGetData(context); 
pixelValue = *(pointerToPixelData + i); 

當您完成後,不要忘記釋放所有內容並釋放malloc'd內存。

希望這有助於

戴夫