如何获取TIFF图像的字节数组并将其转换为System.Drawing.Image对象?

Tom*_*idd 5 .net c# tiff image

我有一个byte[]数组,其内容代表一个TIFF文件(如果我将这些字节直接写入使用该BinaryWriter对象的文件,它形成一个完全有效的TIFF文件),我试图把它变成一个系统.Drawing.Image对象,以便我可以使用它进行后续操作(输入多页TIFF对象)

我遇到的问题是这个任务的普遍接受的代码:

    public Image byteArrayToImage(byte[] byteArrayIn)
    {
        MemoryStream ms = new MemoryStream(byteArrayIn);
        Image returnImage = Image.FromStream(ms, true);
        return returnImage;
    }
Run Code Online (Sandbox Code Playgroud)

不适合我.调用Image.FromStream方法的上述方法的第二行在运行时死掉,说

Parameter Not Valid
Run Code Online (Sandbox Code Playgroud)

我相信这个方法很尴尬,因为这是一个TIFF文件,但我无法弄清楚如何让FromStream方法接受这个事实.

如何将TIFF图像的字节数组转换为Image对象?

另外,就像我说的那样,最终目标是有一个表示多页TIFF文件的字节数组,该文件包含我现在有字节数组对象的TIFF文件.如果有更好的方法可以做到这一点,我会全力以赴.

Tim*_*ers 2

编辑:下面的假设是不正确的,我稍后有机会启动我的 IDE,并在使用和不使用 Write 的情况下进行测试,并且都正确填充了 MemoryStream。

我认为你需要先写入你的 MemeoryStream 。

好像我的记忆(没有双关语)正确地告诉了我:

MemoryStream ms = new MemoryStream(byteArrayIn);
Run Code Online (Sandbox Code Playgroud)

创建该大小的内存流。

然后,您需要将字节数组内容写入内存流:

ms.Write(byteArrayIn, 0, byteArrayIn.Length);
Run Code Online (Sandbox Code Playgroud)

看看是否能解决问题。