繁体   English   中英

如何在ushort数组中读取图像的像素数据并将此ushort数组导出为c#中的二进制文件

[英]How to read pixel data of image in an ushort array and export this ushort array as a binary file in c#

我有一个Tiff图像,它是一个16位图像,现在我想将像素数据读取为ushort数组,并将其存储为文本格式的二进制格式。

我有示例代码。

// Load file meta data with FileInfo
        FileInfo fileInfo = new FileInfo(path + "output.tif");

            // The byte[] to save the data in
            byte[] data = new byte[fileInfo.Length];
            // Load a filestream and put its content into the byte[]
            using (FileStream fs = fileInfo.OpenRead())
            {
                fs.Read(data, 0, data.Length);
            }

          ushort[] result = Array.ConvertAll(data, b => (ushort)b);

但是它正在读取元数据,我想读取像素数据。

您绝对应该使用外部库来处理tiff文件。 这是一种复杂的文件格式,可以包含多个图像,可以压缩图像等。因此,仅读取字节数组绝对不会帮助您获取像素值。 即使它仅包含像素的颜色值,您仍然必须将每两个字节合并为一个16位图像。

在示例代码中,您只是将字节转换为ushorts,这意味着您在数字之前加零,这不会更改值。

首先,映像已经是二进制文件。

在这里,我不明白将图像显式转换为ushort数组的目的。 除此之外,您可以简单地将Tiff图像的所有字节保存到文本文件中,如下所示:

File.WriteAllBytes(@"Text file path", File.ReadAllBytes(@"Tiff image file path"));

然后,要从二进制文件中读回它,您可以简单地从保存的文本文件中读取所有字节,并使用MemoryStream并将其保存回映像中。

using (Image image = Image.FromStream(new MemoryStream(File.ReadAllBytes(@"Text file path"))))
{
    image.Save(@"Path to save image", ImageFormat.Tiff);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM