2009-04-28 8 views
2

Problème n ° 1. My own Related problemObtention d'une image couleur à partir d'un bitmap alors que l'image est 16bppGrayscale

j'ai posé la question suivante ici

Maintenant, le problème n ° 2 est.

Lorsque j'essaie d'ouvrir des images 16 bits (Monocrome) à partir de leurs données de pixels brutes , j'obtiens Erreur. Parce que j'utilise PixelFormat.Format16bppGrayscale sur la création de Bitmap comme

Bitmap bmp = new Bitmap(Img_Width, Img_Height,PixelFormat.Format16bppGrayscale); 

donc googlé et trouvé Format16bppGrayscale pas pris en charge pour que je modifed mon code comme ci-dessous.

PixelFormat format = PixelFormat.Format16bppRgb565; 
Bitmap bmp = new Bitmap(Img_Width, Img_Height, format); 
Rectangle rect = new Rectangle(0, 0, Img_Width, Img_Height); 
BitmapData bmpData = bmp.LockBits(rect, ImageLockMode.ReadWrite, format); 
Marshal.Copy(rawPixel, 0, bmpData.Scan0, rawPixel.Length); 
bmp.UnlockBits(bmpData); 

Chose étonnante est que je reçois l'image maintenant parce que je change le pixelFormat. Mais le problème est que mon image monocrome (en niveaux de gris) est de couleur différente.

Comment puis-je obtenir l'apparence d'origine. J'ai essayé plusieurs méthode de niveaux de gris mais pas réussi S'il vous plaît donnez-moi un code dangereux. Merci,

+0

Est-ce que cela aide? http://www.eggheadcafe.com/forumarchives/NETFrameworkdrawing/Nov2005/post24405677.asp – hometoast

Répondre

2

BobPowell's GDI+ FAQ has a bit about greyscale. Le 16bpp dans .Net ne fonctionne tout simplement pas. Je dois tout faire en 32bpp et avoir recours à des outils externes pour la conversion. Heureusement (?) Je collabore avec les images TIFF la plupart du temps. En outre, this thread pourrait aider.

+0

J'ai déjà vu ce poste. J'ai vu les faqs de BobPowell et j'ai essayé ce code. La couleur des images est simplement changée en couleur aléatoire mais pas en échelle de gris. J'ai aussi vu ce post de bytecode. Il demande la même chose que moi. Je travaille également pour des images médicales. – prashant

0

Vous devez changer la palette à une palette de gris. La palette par défaut pour 8bppIndexed est 256 couleurs. Vous pouvez le changer comme ceci:

ColorPalette pal = myBitmap.Palette; 

for (int i = 0; i < pal.Entries.Length; i++) 
    pal.Entries[i] = Color.FromArgb(i, i, i); 

myBitmap.Palette = pal; 
Questions connexes