【发布时间】:2020-02-20 15:32:29
【问题描述】:
我已将图像(.tif 图像)转换为字节数组并保存在数据库中。我现在正在从数据库中检索该字节数组并想再次转换为图像,但是我正在转换回图像的这个字节数组并没有产生相同的结果。作为测试(如下),我只使用图像而不是从数据库中读取,用于测试目的。
Image 到字节数组的初始转换:
//This is the function I am using:
public static byte[] ImageToByteArray(Image image)
{
using (var ms = new MemoryStream())
{
image.Save(ms, System.Drawing.Imaging.ImageFormat.Tiff);
return ms.ToArray();
}
}
//Converting to byte array:
var tifImage = Image.FromFile(file.ToString());
var imageContent = ImageToByteArray(tifImage);
现在要尝试转换回图像,我正在执行以下操作:
var ms = new MemoryStream(imageContent);
var test1 = Image.FromStream(ms);
但似乎结果不一样。我有一个“拆分”功能,可以拆分 tiff 中的页面,一个返回 8 个页面(位图),另一个返回 1 个。
我对上面的了解不多,所以需要一些帮助来填补知识空白,请:)
感谢您的帮助!
【问题讨论】:
-
stackoverflow.com/a/16958128/7772646 您可以查看此答案以进行转换,看看是否有任何不同
-
感谢 BrightHammer 的回复 - 这似乎是
Bytes[]的图像,我的问题是从Bytes[]到Image不一样 :( -
轴,我认为当你将它转换为字节而不是从字节重新创建图像时会出现问题。
-
一切皆有可能,我会看看并回复您。
-
我通过替换我当前的
ImageToByteArray尝试了解决方案,但是将Byte[]转换回图像时结果仍然不正确:( 我确定我必须遗漏一些小东西,但所有我所做的研究表明我在做正确的事情:(
标签: c# arrays image-processing memorystream