.bmp не является растровым изображением Windows? - PullRequest
0 голосов
/ 20 апреля 2011

когда я создаю растровое изображение вроде этого:

var testImage = new Bitmap(320, 240);
                var testDataLock = testImage.LockBits(new Rectangle(new Point(), testImage.Size),
                                    System.Drawing.Imaging.ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb);

                unsafe
                {
                    var aaa = CamData.ToArray();
                    UInt32 lOffset = 0;
                    UInt32 lPos = 0;
                    byte* lDst = (byte*)testDataLock.Scan0;
                    byte bitshift = 8;
                    fixed (UInt16* lSrc = aaa)
                    {
                        while (lOffset < testImage.Width * testImage.Height)
                        {
                            lDst[lPos] = (byte)(lSrc[lOffset] >> bitshift);
                            lDst[lPos + 1] = lDst[lPos];
                            lDst[lPos + 2] = lDst[lPos];

                            lOffset++;
                            lPos += 3;

                            // take care of the padding in the destination bitmap
                            if ((lOffset % testImage.Width) == 0)
                                lPos += (UInt32)testDataLock.Stride - (uint)(testImage.Width * 3);
                        }

                    }
                }
                testImage.UnlockBits(testDataLock);
                testImage.Save(@"H:\Test.bmp");

Я всегда получаю сообщение об ошибке при попытке открыть этот файл с библиотекой визуализации:

Unknown file type! H:\test.bmp is not a Windows BMP file!

, но в Windows я могуоткрыть файл с помощью средства просмотра и т. д ... нет проблем кто-нибудь знает, почему я получаю эту ошибку?

спасибо

Ответы [ 2 ]

2 голосов
/ 20 апреля 2011

вы можете сохранить System.Drawing.Bitmap в действительный .bmp Windows, как это:

//bmp is a System.Drawing.Bitmap
bmp.Save("MyBitmap.bmp", ImageFormat.Bmp);

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

Кроме того, не забудьте проверить, поддерживает ли ваша библиотека визуализации растровые изображения 24Bit Per Pixel, поскольку это формат, в котором вы создаете свое растровое изображение.

см: PixelFormat.Format24bppRgb

1 голос
/ 20 апреля 2011

Как вы можете прочитать на MSDN в разделе «Примечания», ваше изображение будет сохранено в формате PNG, если кодировщик не указан.

...