2012-03-06 231 views
2

我從庫中獲取一個字節數組,我想將它保存爲Tiff文件灰度/每像素16位。將圖像保存爲Tiff

我用這個方法來做到這一點:

private static void CreateBitmapFromBytes(byte[] pixelValues) 
{ 
    Bitmap pic = new Bitmap(1024, 1024, PixelFormat.Format16bppGrayScale); 

    BitmapData picData = pic.LockBits 
    (new Rectangle(0, 0, pic.Width, pic.Height) 
    , ImageLockMode.ReadWrite 
    , pic.PixelFormat 
    ); 
    IntPtr pixelStartAddress = picData.Scan0; 

    Marshal.Copy(pixelValues, 0, pixelStartAddress, pixelValues.Length); 

    pic.UnlockBits(picData); 
    pic.Save("grid.tif", ImageFormat.Tiff); //< HERE IS THE ERROR 
} 

而我得到的錯誤「一般錯誤在GDI +發生」。 在Vista/32位和Win7/64位上都會出現此問題。 我使用.NET 4.0

編輯:

如果我改變ImageFormat.TiffImageFormat.Bmp我沒有錯誤。但它仍然是我想要的TIFF圖像。

+1

您在哪一行收到錯誤?你能提供一些像素值字節嗎? – CodingBarfield 2012-03-06 14:33:55

+0

其中一個原因 - 您沒有權限寫入目錄 – Reniuz 2012-03-06 14:36:50

+0

字節是...字節。採取2乘2,他們正在編寫「ushort」的灰度。 – gregseth 2012-03-06 14:37:07

回答

2

PixelFormat.Format16bppGrayScale是在GDI +不支持的解決方案。它與TIFF無關。這種格式尚未實施。

+0

哦,太棒了。你是否有更多信息的鏈接,比如哪些其他格式尚未實現(還),何時會等等? – gregseth 2012-03-07 09:01:23

4
+1

這是確切的文章,當我有這個錯誤時解決了問題:) – Reniuz 2012-03-06 14:37:54

+0

不。這不是一個權限問題。 – gregseth 2012-03-06 14:41:09

+0

[瞭解「GDI +中發生了一般性錯誤。」錯誤](http://www.kerrywong.com/2007/11/15/understanding-a-generic-error-occurred-in-gdi-error/)幫幫我 ? – David 2012-03-06 14:47:00