2009-04-16 6 views
1

Je travaille dans Quartz/Core-graphics. J'essaye de créer un contexte graphique noir et blanc, 1b par pixel.Contexte graphique noir et blanc

J'ai actuellement un CGImageRef avec une image en niveaux de gris (qui est vraiment en noir et blanc). Je veux dessiner dans un BitmapContext noir et blanc afin que je puisse extraire l'image bitmap et la comprimer avec le groupe CCITT 4. (Pour une raison quelconque, Quartz ne vous laissera pas enregistrer dans un format TIFF autre que LZW). Donc, j'ai besoin des données de 1 bit par pixel. Je pense que dessiner dans un contexte 1bpp le ferait. Cependant, il ne me laissera pas créer le contexte avec:

context = CGBitmapContextCreate (data, 
       pixelsWide, 
       pixelsHigh, 
       1, 
       pixelsWide/8, 
       CGColorSpaceCreateDeviceGray(), 
       kCGImageAlphaNone 
           ); 

Existe-t-il un espace de couleur plus petit que le gris?

Répondre

2

Même si les bitmaps 1 bit étaient pris en charge, si pixelsWide n'est pas un multiple de 8, le nombre d'octets par ligne n'est pas un nombre entier: par exemple, si votre image est 12 pixels de large, alors le nombre de bytes par rangée est un et demi. Votre expression de division tronquera ceci à un octet par ligne, ce qui est faux.

Mais si les bitmaps 1 bit étaient pris en charge, which they aren't.

+0

Eh bien, en réalité je le fais (pixelsWide +7)/8 pour éviter ce problème. L'arithmétique entière et tous ... Cependant, la liaison malheureuse échoue. Pouvez-vous éditer? –

+0

Je pense que vous vouliez créer un lien vers http://developer.apple.com/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_context/dq_context.html#//apple_ref/doc/uid/TP30001066-CH203-BCIBHHBB –

Questions connexes