Получение цветного изображения из растрового изображения в то время как изображение 16bppGrayscale - PullRequest
2 голосов
/ 28 апреля 2009

Задача №1. Моя собственная Связанная проблема

Я задал следующий вопрос здесь

Теперь проблема № 2.

Когда я пытаюсь открыть 16-битные (монокромные) изображения из их необработанных данных пикселей тогда я получаю ошибку. Потому что я использую PixelFormat.Format16bppGrayscale при создании растрового изображения, как

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

Так гуглил и обнаружил, что Format16bppGrayscale не поддерживается, поэтому я изменил свой код, как показано ниже.

 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);

Удивительно, что теперь я получаю изображение, потому что я изменяю пиксельный формат. Но проблема в том, что мое монохромное изображение (в градациях серого) выглядит разноцветным.

Как я могу получить первоначальный вид. Я пробовал несколько оттенков серого, но безуспешно Пожалуйста, дайте мне небезопасный код. Спасибо,

Ответы [ 2 ]

2 голосов
/ 28 апреля 2009

Часто задаваемые вопросы BobDowell по GDI + содержат информацию о оттенках серого . 16bpp в .Net просто не работает. Я должен сделать все в 32bpp и прибегнуть к внешним инструментам для конвертации. К счастью (?) Я большую часть времени придерживаюсь изображений TIFF. Кроме того, эта тема может помочь.

0 голосов
/ 02 июля 2009

Вам необходимо изменить поддон на поддон в оттенках серого. Стандартный поддон для 8bppIndexed - 256 цветов. Вы можете изменить это так:

ColorPalette pal = myBitmap.Palette;

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

myBitmap.Palette = pal;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...