c# - 难以将图像保存到 MemoryStream

标签 c# image stream

我在将字节流从图像(在本例中为 jpg)保存到 System.IO.MemoryStream 对象时遇到了一些困难。目标是将 System.Drawing.Image 保存到 MemoryStream,然后使用 MemoryStream 将图像写入字节数组(我最终需要将它插入数据库)。但是,在 MemoryStream 关闭后检查变量 data 显示所有字节都为零......我很困惑,不知道我做错了什么...

using (Image image = Image.FromFile(filename))
{
    byte[] data;

    using (MemoryStream m = new MemoryStream())
    {
        image.Save(m, image.RawFormat);
        data = new byte[m.Length];
        m.Write(data, 0, data.Length);
    }

    // Inspecting data here shows the array to be filled with zeros...
}

任何见解将不胜感激!

最佳答案

要将流中的数据加载到数组中,您需要读取,而不是写入(并且您需要倒带)。但是,在这种情况下更简单,ToArray():

using (MemoryStream m = new MemoryStream())
{
    image.Save(m, image.RawFormat);
    data = m.ToArray();
}

关于c# - 难以将图像保存到 MemoryStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7629887/

相关文章:

c++ - 在 g++ 下获取 stringstream >> my_double 以给出无限值或 NaN 的方法?

javascript - Node 流 - 超出最大调用堆栈

c# - 如何使用 redis 字典添加 IEnumerable< T > 集合数据?

C# ECDsaCng.SignData 在 OpenSSL 中使用签名?

php - 从 img 标签的 src 属性上传图像 JQuery AJAX PHP

java - 白色和黑色图像到二维数组以及经过一些操作后二维数组到Java中的图像

c# - 对 NDepend 图中的命名空间进行分组

c# - 使用 javascript 值和 doPostback?

html - 如何让文本区域占据 div 中的剩余高度?

php - 如何通过stream_get_contents()连续监听多个TCP流?