当前位置:编程学习 > C#/ASP.NET >>

这个问题让我很火大,朋友们帮我解决一下吧!!急需啊

 MemoryStream stream = new MemoryStream(imageBytes,true);
            stream.Write(imageBytes, 0, imageBytes.Length);
            Bitmap bmp = new Bitmap(stream);//这里老是提示我说参数无效,发生异常
这是为什么啊 难道 是输出流的原因 --------------------编程问答-------------------- --------------------编程问答-------------------- byte数组内容不完整。 --------------------编程问答-------------------- 应该这样写吧:

  MemoryStream stream = new MemoryStream();
  stream.Write(imageBytes, 0, imageBytes.Length);
  Bitmap bmp = new Bitmap(stream);
--------------------编程问答-------------------- 或者这样:
MemoryStream stream = new MemoryStream(imageBytes,true);
  Bitmap bmp = new Bitmap(stream);

你原来的代码导致:stream 中包含了两幅图片的数据了。 --------------------编程问答--------------------  MemoryStream ms = new MemoryStream();
  ms.Write(imageBytes, 0, imageBytes.Length);
  Bitmap bmp = new Bitmap(ms);

--------------------编程问答-------------------- 实例化时你已经给了它一个值了! --------------------编程问答-------------------- 好像是byte数组不完整造成的 我先尝试一下大家的办法  --------------------编程问答-------------------- 以上方法我都试过了,还是出项那个异常,说参数无效,好像是byte数组不完整 ,读取超时什么的 ,可是MemoryStream这个流是不支持超时的,是不是因为不支持,所以byte数组没有读取完整啊,怎么解决 我试了还是不行 --------------------编程问答-------------------- 给你个参考 --------------------编程问答-------------------- 比较一下数组的长度和内存流的长度,如果相同的话,问题就出在数组本身了。 --------------------编程问答-------------------- 在创建 Bitmap 实例前,加上:stream.Position = 0; 再试试。 --------------------编程问答-------------------- 我试了一下还是不行 啊 --------------------编程问答-------------------- 这是我以前写的一段 图像->Base64字符串 转换的测试,给你参考一下:

            //encoding the image to Base64.
            MemoryStream stream = new MemoryStream();
            image.Save(stream, ImageFormat.Jpeg);
            string base64String = Convert.ToBase64String(stream.ToArray());

            sw = new StreamWriter(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Base64PictrueFile.txt"));
            sw.Write(base64String);
            sw.Flush();

            //Decoding the image from Base64.
            sr = new StreamReader(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Base64PictrueFile.txt"));
            base64String = sr.ReadToEnd();
            image = new Bitmap(new MemoryStream(Convert.FromBase64String(base64String)));
            image.Save(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Pictrue.jpeg"), ImageFormat.Jpeg);
--------------------编程问答--------------------
引用 2 楼 zanfeng 的回复:
byte数组内容不完整。

+1 --------------------编程问答--------------------
引用 3 楼 wudliang 的回复:
应该这样写吧:

C# code

  MemoryStream stream = new MemoryStream();
  stream.Write(imageBytes, 0, imageBytes.Length);
  Bitmap bmp = new Bitmap(stream);


错了是这个+1 --------------------编程问答-------------------- --------------------编程问答-------------------- 你是不是想提交一个xml文件?
--------------------编程问答-------------------- 不是 我在数据库中存储了图片 想通过流读取出来 可老是说参数无效  --------------------编程问答-------------------- 我试了下,应该还是imageBytes里面的内容有问题,不是有效的图像数据。如果imageBytes里面是正确的图像数据的话,虽然你在MemoryStream里面写了两遍,也不会有问题的。

我的测试代码如下,运行是没有问题的

            FileStream file = new FileStream(@"d:\1.jpg", FileMode.Open);
            byte[] buffer = new byte[file.Length];
            file.Read(buffer, 0, (int)file.Length);

            MemoryStream stream = new MemoryStream(buffer, true);
            stream.Write(buffer, 0, buffer.Length);
            Bitmap bitmap = new Bitmap(stream);

补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,