C# byte[]与Image的相互转换

本文介绍了一种将图片转换成字节数组的方法,并提供了具体的C#代码实现。文章详细展示了如何使用MemoryStream来保存图片数据并将其转换为字节数组,同时也包括了如何从字节数组中还原出原始图片的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 修改后的代码:

    [c-sharp] view plain copy print ?
    1. private byte[] convertByte(Image img) 
    2.         { 
    3.             MemoryStream ms = new MemoryStream(); 
    4.             img.Save(ms, img.RawFormat); 
    5.             //byte[] bytes = new byte[ms.Length]; 
    6.             //ms.Read(bytes, 0, Convert.ToInt32(ms.Length)); 
    7.             //以上两句改成下面两句 
    8.               byte[] bytes = ms.ToArray(); 
    9.             ms.Close(); 
    10.             return bytes; 
    11.         } 
    12.         private Image convertImg(byte[] datas) 
    13.         { 
    14.             MemoryStream ms = new MemoryStream(datas); 
    15.             Image img = Image.FromStream(ms, true);//在这里出错 
    16.               //流用完要及时关闭 
    17.               ms.Close(); 
    18.             return img; 
    19.         }  

    附:         img.Save(ms, img.RawFormat);
                 下面加一行
                 ms.Position = 0;
                 将流的位置置到开始处。
                 Image.Save方法会将流置到末尾,所以导致读取不到数据。

我写的代码:

    private byte[] ConvertImageToByteArray(System.Drawing.Image img)
    {
        using (System.IO.MemoryStream ms = new MemoryStream())
        {
            img.Save(ms, img.RawFormat);
            return ms.ToArray();
        }
    }

    private System.Drawing.Image ConvertByteArrayToImage(byte[] byteArray)
    {
        using (MemoryStream ms = new MemoryStream(byteArray))
        {
            System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
            return img;

        }
    }

 

调用:

            System.Drawing.Image img = System.Drawing.Image.FromFile(@"E:\\John App Doc and Demo\TelerikDemo\web\Images\photo1.jpg");
            newC.Picture = ConvertImageToByteArray(img);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值