这个问题让我很火大,朋友们帮我解决一下吧!!急需啊
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);
+1 --------------------编程问答--------------------
错了是这个+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#