【发布时间】:2010-11-13 11:28:48
【问题描述】:
我需要一个 C# 函数,该函数将获取 8 位灰度 TIFF 的 Byte[],并返回 1 位(黑白)TIFF 的 Byte[]。
我对使用 TIFF 比较陌生,但总体思路是我们需要将它们从灰度或彩色转换为黑白/单色/二进制图像格式。
我们通过 WCF 作为 Byte[] 接收图像,然后我们需要将此转换为黑白,以便将它们发送到进行进一步处理的组件。我们目前不打算将它们保存为文件。
作为参考,在我们的测试客户端中,这是我们创建 Byte[] 的方式:
FileStream fs = new FileStream("test1.tif", FileMode.Open, FileAccess.Read);
this.image = new byte[fs.Length];
fs.Read(this.image, 0, System.Convert.ToInt32(fs.Length));
fs.Close();
--------更新---------
我认为这里可能有不止 1 个好的答案,但我们最终使用了 CodeProject 站点中的代码,并添加了以下方法来重载转换函数以接受 Byte[] 以及位图:
public static Byte[] ConvertToBitonal(Byte[] original)
{
Bitmap bm = new Bitmap(new System.IO.MemoryStream(original, false));
bm = ConvertToBitonal(bm);
System.IO.MemoryStream s = new System.IO.MemoryStream();
bm.Save(s, System.Drawing.Imaging.ImageFormat.Tiff);
return s.ToArray();
}
【问题讨论】:
-
这不是您想要的方式。要完成这项工作,您需要解析整个 TIFF。 TIFF 是一种重要的文件格式。使用可以读写 TIFF 文件的工具包。
-
我正在寻找一个可以解析整个 TIFF 的 c# 函数,正如您所提到的。到目前为止,我已经在 VB 中看到了一些,目前正在审查 c# 中的一个。我们想要源而不是密封组件。
标签: c# graphics image image-processing tiff