【发布时间】:2012-09-04 17:13:38
【问题描述】:
我正在读取一个图像文件并重新显示它而不进行任何更改,如下面的代码所示,但我得到了这个错误:
:CGBitmapContextCreate:不支持的参数组合:8个整数位/分量; 16 位/像素; 1-分量色彩空间; kCGImageAlphaPremultipliedLast; 3792 字节/行。
代码是:
CGImageRef sourceImage = theImage.image.CGImage;
CFDataRef theData;
theData = CGDataProviderCopyData(CGImageGetDataProvider(sourceImage));
UInt8 *pixelData = (UInt8 *) CFDataGetBytePtr(theData);
CGContextRef context;
context = CGBitmapContextCreate(pixelData,
CGImageGetWidth(sourceImage),
CGImageGetHeight(sourceImage),
8,
CGImageGetBytesPerRow(sourceImage),
CGImageGetColorSpace(sourceImage),
kCGImageAlphaPremultipliedLast);
CGImageRef newCGImage = CGBitmapContextCreateImage(context);
UIImage *newImage = [UIImage imageWithCGImage:newCGImage];
CGContextRelease(context);
CFRelease(theData);
CGImageRelease(newCGImage);
theImage.image = newImage;
在我最近升级到 Xcode 4.4 之前,这段代码一直运行良好。
根据iPhone CGContextRef CGBitmapContextCreate unsupported parameter combination 中的建议,我将“CGImageGetColorSpace(sourceImage)”替换为“CGColorSpaceCreateDeviceRGB()”,但出现此错误:
:CGBitmapContextCreate:无效数据字节/行:对于 8 个整数位/分量、3 个分量、kCGImageAlphaPremultipliedLast,应至少为 15168。
然后,当我将“CGImageGetBytesPerRow(sourceImage)”替换为“CGImageGetBytesPerRow(sourceImage)*4”时,错误消失了,但 4X 缩小图像的副本并排显示。
有人遇到过这个问题吗?是不是和Xcode 4.4升级有关?
谢谢!谢
【问题讨论】: