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

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

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

如何建立一个大的位图谢谢。

4

2 回答 2

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 );
于 2012-07-31T13:31:36.517 回答
0

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

字节每像素 * 目标宽度

你不能接受静态 8 和 4。

有关颜色空间和相对 bytesPerPixel 的信息,请参阅此内容。

于 2012-07-31T11:51:22.333 回答