日期:2014-05-20  浏览次数:20883 次

【求助】请问 一个 image 图片转换成Byte[]数组的问题
本帖最后由 yan_hyz 于 2013-03-08 16:18:50 编辑
RT,我有一个Image图片 格式不一定,然后我通过MemoryStream流将图片保存在一个Byte数组中,然后将整个Byte数组 以二进制的形式保存在文件里面,接着从该文件中读取字节留到byte数组, 再转换成 Image图片,那么在从文件中读取字节流的时候读取出来的数据保存在Byte数组里面,那么整个 byte数组 应该定义多大呢???

说 不好说清楚,我上代码吧,帮我看看 会不会 造成数组不够长的情况:
代码写入文件的:


  System.IO.MemoryStream ms = new System.IO.MemoryStream();
            this._image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
            byte[] bytes = new byte[] { };
            bytes = ms.GetBuffer();
            outStream.writeByteArray(bytes);
//上面是转换为byte数组,下面这段是写入文件:
    public void writeByteArray(byte[] bytes)
        {
            long length = bytes.Length;
            byte[] tbs = BitConverter.GetBytes(length);
            for (int i = 0; i < tbs.Length; i++)
            {
                writer.Write(tbs[i]);
            }
            for (int i = 0; i < bytes.Length; i++)
            {
                writer.Write(bytes[i]);
            }
        }

  

读取文件数据的代码:



 public byte[] readBytesArray()
        {
            ulong temp = 0;
            ulong length = (ulong)BitConverter.GetBytes(temp).Length;
            byte[] byLen = new byte[length];
            for (ulong i = 0; i < length; i++)
            {
                byLen[i] = cacheBuff[this.position++];
            }
            length = BitConverter.ToUInt64(byLen, 0);
            byte[] bytes = new byte[length];
            for (ulong i = 0; i < length; i++)
            {
                bytes[i] = cacheBuff[this.position++];