J'ai essayé et essayé juste de conclure que je suis désolé: la classe de bibliothèque .Net Bitmap NE PAS enregistrer JPEG 8bpp même si explicitement et les données sont en niveaux de gris . (Remarque: bien que mentionné à certains endroits, le format JPEG supporte 8bpp).
A Convert an image to grayscale vous pouvez trouver code snipet pour convertir en niveaux de gris n'importe quelle image.
En utilisant ce code, j'ai pu enregistrer une instance de niveaux de gris 8bpp d'image avec l'extension « .jpeg », mais indiquant ImageFormat.Gif ... c'est un tricheur ...
Mes résultats montrent que la solution d'un tout une approche différente.
La bibliothèque FreeImage offre des API puissantes, y compris la fonctionnalité nécessaire pour résoudre votre problème.
page d'accueil de Il est à http://freeimage.sourceforge.net/faq.html
Mais, je ne pouvais pas compiler facilement dans ma machine Win2008 + VS 2010.
On devrait beaucoup transpirer pour le faire fonctionner dans des environnements modernes.
Quelques conseils sur la façon d'accomplir que l'on trouve à http://www.sambeauvois.be/blog/2010/05/freeimage-and-x64-projects-yes-you-can/
Bonne chance!
Avez-vous des exemples de fichiers jpg que le composant cible acceptera? Je suppose qu'ils sont aussi des images 24 bits (la norme pour jpg) mais chacun des canaux rouge, vert et bleu contiendra les mêmes données. – ChrisF
Très obscur, GDI + ne le supporte pas. Essayez la classe JpegBitmapEncoder avec une palette BitmapPalettes.Gray256. –
@ChrisF, je ne suis pas un expert en jpg mais c'est ce que Windows et IrfanView me disent. Par exemple, si je vois les propriétés du fichier jpg, je vois la profondeur de bit est 8. Je vais voir si je peux télécharger un exemple d'image quelque part. – TheBlueSky