IOS CGBitmapContextCreate大位图

时间:2012-07-31 11:43:32

标签: objective-c ios bitmap gdi

CGContextRef context =  CGBitmapContextCreate(nil,
        width, //if width More than 6002/4
        height, 
        8,
        width*4,//if width*4 > 6002
        colorSpace,
        kCGImageAlphaPremultipliedFirst |kCGBitmapByteOrder32Little );

当宽度* 4&gt; 6002有错误时,我想构建一个大位图(宽度<= 2500)

<Error>: CGBitmapContextCreate: unsupported parameter combination: 
8 integer bits/component;  32 bits/pixel; 
3-component color space; kCGImageAlphaPremultipliedFirst; 6002 bytes/row.

如何构建大型位图 感谢。

2 个答案:

答案 0 :(得分:1)

问题是6002字节/行,因为这里每个像素需要4个字节,但6002不能被4个没有余数分割。更好地计算每个像素的行数:

size_t width = 1920;
size_t height = 1080;
CGContextRef context = CGBitmapContextCreate(
    NULL,
    width,
    height,
    8,
    width * 4,
    colorSpace,
    kCGImageAlphaPremultipliedFirst |kCGBitmapByteOrder32Little );

答案 1 :(得分:0)

new bytesPerRow将与原始图像不同。您需要计算新的bytesPerRow。

bytesPerPixel * targetWidth

你不能拿静态8和4.

请参阅this了解色彩空间和相对bytesPerPixel。