CGBitmapContextCreate: nicht unterstützte Parameterkombination

7

Ich erhalte diesen Fehler beim Erstellen eines Bitmap-Kontexts:

CGBitmapContextCreate: nicht unterstützte Parameterkombination: 8 ganze Bits / Komponente; 24 Bits / Pixel; 3-Komponenten-Farbraum; kCGImageAlphaNone; 7936 Bytes / Zeile.

Hier ist der Code (beachten Sie, dass der Kontext auf den Parametern eines vorhandenen CGImage basiert:

%Vor%

Die Breite ist 2626, die Höhe ist 3981. Ich habe bytesPerRow bei Null verlassen, so dass es automatisch für mich berechnet wird, und es wird 7936 von selbst gewählt.

Also, wo auf der Erde ist die Inkonsistenz? Es macht mich verrückt.

    
tarmes 23.11.2012, 10:58
quelle

4 Antworten

16

Aus Gründen, die ich nicht verstehe, habe ich das gelöst, indem ich den Parameter BitmapInfo auf kCGImageAlphaNoneSkipLast gesetzt habe.

    
tarmes 26.11.2012, 08:45
quelle
6
  

CGBitmapContextCreate: nicht unterstützte Parameterkombination: 8 ganze Bits / Komponente; 24 Bits / Pixel; 3-Komponenten-Farbraum; kCGImageAlphaNone; 7936 Bytes / Zeile.

In der Dokumentation zu Quartz 2D Programming finden Sie eine Liste der Unterstützte Pixelformate . Die 8/3/24-Kombination wird nicht unterstützt, aber 8/3/32 ist unabhängig von der Verwendung von Alpha oder nicht.

    
Heinrich Giesen 23.11.2012 14:30
quelle
2

Heinrich hat Ihnen einen guten Hintergrund für die Antwort gegeben. Ich dachte nur, ich würde meinen speziellen Fall als Alternative zu der Antwort von tarmes anbieten. Das Problem mit dieser Antwort ist, dass das Problem nicht gelöst wird, wenn ein Alpha-Kanal vorhanden sein soll. Ich benutzte eine Kategorie namens UIImage + Alpha von Trevor Harmon als ich auf dieses Problem stieß. Im Code habe ich diesen Kommentar gefunden:

%Vor%

Nun wurde diese fest codierte Korrektur in einer der Methoden aufgerufen, die CGBitmapContextCreate aufruft, aber nicht die folgende. Für mich ging es einfach darum, dem Rat des Autors zu folgen, das Problem in einer seiner anderen Methoden zu beheben;)

Offensichtlich wird ein Teil von CGBitmapInfo nicht korrekt aus dem fraglichen Bild übergeben, obwohl ich es nicht weiß.

Verwenden Sie diese Konstanten also in der BitmapInfo, wenn Sie mit dem Alpha-Kanal arbeiten: kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedFirst

Ansonsten möchte ich nur darauf hinweisen, dass es eine wirklich nützliche Klasse ist, wenn Sie mit Aliasing-Problemen zu tun haben!

(Auch erwähnenswert dieses Problem nur in Xcode 6 aufgetaucht ....)

    
sinewave440hz 31.08.2014 08:24
quelle
1

Ich bin nicht sicher, ob es irgendjemandem helfen würde oder nicht, ich stoße einfach auf das ähnliche Problem und versuche es trotzdem wie vorgeschlagen, aber kein Glück.

Mein Problem ist:

%Vor%

Mit Fehler:

  

& lt; Fehler & gt ;: CGBitmapContextCreate: nicht unterstützte Parameterkombination: 8 ganze Bits / Komponente; 8 Bits / Pixel; 1-Komponenten-Farbraum; kCGImageAlphaNone; 2147483648 Bytes / Zeile.

Dann habe ich einen Fehler gefunden, dass header_fontsize keine Werte zugewiesen sind (weil ich fontsize mit header_fontsize verwechsele). Der Fehler liegt hier: dimensions:CGSizeMake(header_fontsize*9, txt_h) mit header_fontsize nicht zugewiesenen Wert (es ist nicht 0, zuweisen header_fontsize = 0 immer noch ok); Weisen Sie header_fontsize einen Wert zu, um das Problem zu beheben.

Hoffe, dass dies jemandem in einem ähnlichen Fall wie Sprite helfen wird.

    
Lương Quang Dũng 22.09.2014 17:15
quelle

Tags und Links