【问题标题】:Save image as Tiff将图像另存为 Tiff
【发布时间】:2012-03-06 14:32:20
【问题描述】:

我从库中获取一个字节数组,我想将其保存为 Tiff 文件灰度/每像素 16 位。

我就是用这个方法来做的:

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.Tiff 更改为 ImageFormat.Bmp 我没有错误。但它仍然是我想要的 TIFF 图像。

【问题讨论】:

  • 您在哪一行收到错误消息?你能提供一些像素值字节吗?
  • 原因之一——您没有写入目录的权限
  • 字节是...字节。他们对ushorts 上的灰度进行了 2 2 的编码。
  • 哪一行出现错误?以及如何使用免费的 tiff 库:bitmiracle.com/libtiff/help/create-16-bit-grayscale-tiff.aspx | bitmiracle.com/libtiff
  • 为什么不使用外部库,但它不应该在本地工作吗?

标签: c# .net gdi+ tiff


【解决方案1】:

这是解决您问题的解决方案 Solving "A generic error occurred in GDI+" exception.

【讨论】:

【解决方案2】:

GDI+ 不支持 PixelFormat.Format16bppGrayScale。它与 TIFF 无关。此格式尚未实现。

【讨论】:

  • 哦,太好了。您是否有包含更多信息的链接,例如哪些其他格式尚未实现(尚未实现)、何时实现等?
猜你喜欢
  • 1970-01-01
  • 2022-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-17
  • 1970-01-01
相关资源
最近更新 更多