2012-03-06 145 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