2

最初にイメージ コンテキストを生成する UIImage (UIImage のカテゴリ内) のサイズを変更するコードがいくつかあります。

CGImageRef oldImage = [self CGImage];
CGSize oldSize = [self size];

CGContextRef context = CGBitmapContextCreate(NULL, //Data
    newSize.width, //Width
    newSize.height, //Height
    CGImageGetBitsPerComponent(oldImage), // Bits per Component
    4 * newSize.width, //Bytes per Row
    CGImageGetColorSpace(oldImage), //Color Space
    CGImageGetBitmapInfo(oldImage)); //Info

デバイスでは、このコードは正常に機能しますが、シミュレーターでは次のエラーで失敗します。

<Error>: CGBitmapContextCreate: unsupported parameter combination: 8 integer bits/component; 24 bits/pixel; 3-component colorspace; kCGImageAlphaNone; 428 bytes/row.

誰もこれについて説明がありますか?私の記憶が正しければ、2.2 より前は問題なく動作していました。

4

1 に答える 1

3

これについてはほとんど知りませんが、画像がアルファコンポーネントがないと報告しているため、BytesPerRow引数は3*newSize.widthである必要があると思います。

それでも問題が解決しない場合は、Quartz2Dプログラミングガイドのサポートされているピクセル形式で詳細を確認することをお勧めします。悲惨なのは、24 bppのエントリがないことですが、それがエラーによって報告されています。シミュレーターとデバイスの両方に関連する値を記録して、他に不一致があるかどうかを確認することをお勧めします。

于 2009-01-24T22:28:23.217 に答える