将图像转换为字节数组?

时间:2010-10-25 17:38:02

标签: image-processing bytearray

将图像转换为字节数组的需要/目的是什么?

为什么我们需要这样做?

9 个答案:

答案 0 :(得分:5)

将图像转换为字节数组的目的是什么?

  • 将图像保存到磁盘

  • 序列化图像以发送到Web服务

  • 将图像保存到数据库

  • 序列化图像以进行处理

......只是我能想到的一些问题。

答案 1 :(得分:4)

我认为最常见的用途是将图像保存在数据库中(BINARY(MAX)数据类型)。

答案 2 :(得分:2)

最常见的是将图像作为blob(二进制大对象)保存在数据库中,但它也可以在Web服务中使用,您可以将字节数组作为方法参数,然后将其转换为图像无论什么原因。

答案 3 :(得分:1)

我唯一需要做的就是逐个像素地比较两个图像,看它们是否相同(作为自动测试套件的一部分)。转换为字节并固定内存允许我在C#中使用不安全的块来进行基于指针的直接比较,这比GetPixel快几个数量级。

答案 4 :(得分:1)

最近我写了一个代码来从图像中获取哈希,这里是如何:

    private ImageConverter c = new ImageConverter();
    private byte[] getBitmapHash(Bitmap hc) {
        return md5.ComputeHash(c.ConvertTo(hc, typeof(byte[])) as byte[]);
    }

这是context中的内容。 序列化图像或以原始字节格式(不使用mime类型)将其添加到数据库并不是合理的,但您可以这样做。 图像处理加密很可能是有用的地方。

答案 5 :(得分:0)

进一步概括Brad所说的:序列化和(可能)对象比较的基础。

答案 6 :(得分:0)

如果您在内存中有图像并希望通过协议(例如HTTP)将其发送给某人,也会很有帮助。一个完美的例子是Chilkat HTTPRequest clas中的“AddBytesForUpload”方法[http://www.chilkatsoft.com/refdoc/vbnetHttpRequestRef.html]。

为什么你需要这样做你可能会问...好吧我们假设我们有一个我们想要自动上传到ima​​geshack的图像目录,但是先做一些mods就像把我们的域名放在右下角。有了这个,你将图像加载到内存中,使用你需要的mod进行修改,然后简单地将该流附加到HTTPRequest对象。如果没有数组,你需要在上传之前对文件进行相同的处理,这反过来会创建一个新文件,然后需要删除原文,或者写入原文,这并不总是理想的。

答案 7 :(得分:-1)

public byte[] imageToByteArray(System.Drawing.Image image)
{
 MemoryStream ms = new MemoryStream();
 image.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
 return ms.ToArray();
}

答案 8 :(得分:-2)

如果是图像文件,请使用File.ReadAllBytes()。