2011-04-20 3 views
0

при создании растрового изображения, как это:.bmp - это не растровое изображение Windows?

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

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

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

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

благодаря

ответ

2

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

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

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

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

см:. PixelFormat.Format24bppRgb

+0

Это. Я не уверен, какой формат он будет выбирать по умолчанию, но всегда хорошо быть явным. –

+0

ooh so easy :), thanks :) – h0ppel

1

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

+0

Не думал, чтобы проверить, что именно произойдет, если вы не указали кодировщик. +1 –