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

ここでは各ピクセルに 4 バイトが必要なため、問題は 6002 バイト/行ですが、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

new bytesPerRow は元のイメージとは異なります。新しい bytesPerRow を計算する必要があります。

bytesPerPixel * targetWidth

静的な 8 と 4 は使用できません。

色空間と相対 bytesPerPixel については、こちらを参照してください。

于 2012-07-31T11:51:22.333 に答える