我需要一个 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();
}