7

ビットマップコンテキストを作成すると、次のエラーが発生します。

CGBitmapContextCreate:サポートされていないパラメーターの組み合わせ:8整数ビット/コンポーネント。24ビット/ピクセル; 3成分色空間; kCGImageAlphaNone; 7936バイト/行。

コードは次のとおりです(コンテキストは既存のCGImageのパラメーターに基づいていることに注意してください。

context = CGBitmapContextCreate(NULL,
                                (int)pi.bufferSizeRequired.width,
                                (int)pi.bufferSizeRequired.height,
                                CGImageGetBitsPerComponent(imageRef),
                                0,
                                CGImageGetColorSpace(imageRef),
                                CGImageGetBitmapInfo(imageRef));

幅は2626、高さは3981です。bytesPerRowをゼロのままにして、自動的に計算されるようにしました。これにより、独自の7936が選択されます。

それで、地球上のどこに矛盾がありますか?それは私を狂わせています。

4

5 に答える 5

20

理解できない理由で、BitmapInfoパラメーターをに設定することでこれを解決しましたkCGImageAlphaNoneSkipLast

于 2012-11-26T08:45:19.140 に答える
6

CGBitmapContextCreate:サポートされていないパラメーターの組み合わせ:8整数ビット/コンポーネント。24ビット/ピクセル; 3成分色空間; kCGImageAlphaNone; 7936バイト/行。

Quartz 2Dプログラミングのドキュメントには、サポートされているピクセル形式のリストがあります。8/3/24の組み合わせはサポートされていませんが、8/3/32は、アルファを使用するかどうかに関係なくサポートされています。

于 2012-11-23T14:30:54.217 に答える
3

ハインリッヒはあなたに答えの良い背景を与えました。tarmesの答えの代わりに、私が特定のケースを提供すると思っただけです。その答えの問題は、アルファチャネルを存在させたい場合は問題が解決しないことです。この問題が発生したとき、TrevorHarmonによるUIImage+Alphaというカテゴリを使用していました。コードで私はこのコメントを見つけました:

// The bitsPerComponent and bitmapInfo values are hard-coded to prevent an "unsupported parameter combination" error

現在、このハードコードされた修正は、を呼び出すメソッドの1つにありましたCGBitmapContextCreateが、それに続くメソッドにはありませんでした。だから私にとっては、他の方法の1つで問題を修正するために、作者自身のアドバイスに従うだけの問題でした;)

明らかに、問題の画像から一部CGBitmapInfoが正しく渡されていませんが、理由はわかりません。

したがって、アルファチャネルを使用している場合は、bitmapInfoで次の定数を使用します。kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedFirst

それ以外の場合は、エイリアシングの問題を扱っている場合に非常に便利なクラスであることを指摘したいと思います。

(また、この問題はXcode 6 ....でのみ発生しました。)

于 2014-08-31T08:24:48.413 に答える
1

それが誰かに役立つかどうかはわかりません。私は同じような問題に遭遇し、提案されたようにとにかく試してみましたが、運がありませんでした。

私の問題は:

CCLabelTTF *header_txt = [CCLabelTTF 
   labelWithString:header 
   fontName:fontname fontSize:header_fontsize 
   dimensions:CGSizeMake(header_fontsize*9, txt_h) 
   hAlignment:kCCTextAlignmentLeft 
   vAlignment:kCCVerticalTextAlignmentCenter];

エラーあり:

<エラー>:CGBitmapContextCreate:サポートされていないパラメーターの組み合わせ:8整数ビット/コンポーネント; 8ビット/ピクセル; 1成分色空間; kCGImageAlphaNone; 2147483648バイト/行。

次に、header_fontsizeに値が割り当てられていないという間違いを見つけました(fontsizeとheader_fontsizeを間違えたため)。エラーはここにあります:dimensions:CGSizeMake(header_fontsize*9, txt_h)header_fontsizeに値が割り当てられていません(0ではなく、割り当てても問題ありませんheader_fontsize = 0)。header_fontsize問題を修正するために値を再割り当てします。

これが、スプライトの場合など、同様の場合の誰かに役立つことを願っています。

于 2014-09-22T17:15:48.320 に答える
0

一部のピクセル形式はサポートされていません。

次の方法でサポートされている画像があるかどうかを事前に確認できます。

extension CGImage {
  public var hasCGContextSupportedPixelFormat: Bool {
    guard let colorSpace = self.colorSpace else {
      return false
    }
    #if os(iOS) || os(watchOS) || os(tvOS)
    let iOS = true
    #else
    let iOS = false
    #endif

    #if os(OSX)
    let macOS = true
    #else
    let macOS = false
    #endif
    switch (colorSpace.model, bitsPerPixel, bitsPerComponent, alphaInfo, bitmapInfo.contains(.floatComponents)) {
    case (.unknown, 8, 8, .alphaOnly, _):
      return macOS || iOS
    case (.monochrome, 8, 8, .none, _):
      return macOS || iOS
    case (.monochrome, 8, 8, .alphaOnly, _):
      return macOS || iOS
    case (.monochrome, 16, 16, .none, _):
      return macOS
    case (.monochrome, 32, 32, .none, true):
      return macOS
    case (.rgb, 16, 5, .noneSkipFirst, _):
      return macOS || iOS
    case (.rgb, 32, 8, .noneSkipFirst, _):
      return macOS || iOS
    case (.rgb, 32, 8, .noneSkipLast, _):
      return macOS || iOS
    case (.rgb, 32, 8, .premultipliedFirst, _):
      return macOS || iOS
    case (.rgb, 32, 8, .premultipliedLast, _):
      return macOS || iOS
    case (.rgb, 64, 16, .premultipliedLast, _):
      return macOS
    case (.rgb, 64, 16, .noneSkipLast, _):
      return macOS
    case (.rgb, 128, 32, .noneSkipLast, true):
      return macOS
    case (.rgb, 128, 32, .premultipliedLast, true):
      return macOS
    case (.cmyk, 32, 8, .none, _):
      return macOS
    case (.cmyk, 64, 16, .none, _):
      return macOS
    case (.cmyk, 128, 32, .none, true):
      return macOS
    default:
      return false
    }
  }
}

詳細(およびサポートされているピクセル形式のリスト)については、https://developer.apple.com/library/archive/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_context/dq_context.htmlを参照してください。

于 2021-06-07T11:03:16.263 に答える