0
我正在使用以下代碼修改圖像的像素。 我遇到的問題是圖像的顏色不正確。 你對這個問題有什麼想法嗎?修改CGImageRef的像素
CGImageRef inImage = img.CGImage;
CGContextRef ctx;
CFDataRef m_DataRef;
m_DataRef = CGDataProviderCopyData(CGImageGetDataProvider(inImage));
UInt8 * m_PixelBuf = (UInt8 *) CFDataGetBytePtr(m_DataRef);
// Byte tmpByte;
int length = CFDataGetLength(m_DataRef);
for (int index = 0; index < length; index += 4)
{
// DO Stuff
}
ctx = CGBitmapContextCreate(m_PixelBuf,
CGImageGetWidth(inImage),
CGImageGetHeight(inImage),
8,
CGImageGetBytesPerRow(inImage),
CGImageGetColorSpace(inImage),
kCGImageAlphaPremultipliedFirst);
CGImageRef imageRef = CGBitmapContextCreateImage (ctx);
UIImage* rawImage = [UIImage imageWithCGImage:imageRef];
CGContextRelease(ctx);
也許你應該告訴你做什麼'DO Stuff'.. Alao,爲什麼不做一個小型實驗並將所有像素設置爲紅色。那麼你可能會發現,如果你正在解決他們錯誤或不。 – 2010-02-13 14:49:22
即使我什麼都不做,圖像被修改。問題不在於處理代碼。 – 2010-02-13 15:33:29
它是如何修改的?顏色通道是否被交換或者圖像是否被扭曲?您是否嘗試將kCGImageAlphaPremultipliedFirst更改爲CGImageGetAlphaInfo()的結果? – Costique 2010-02-13 16:14:49