图片保存到流报错
问题
问题见如下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
void Main()
{
//把图片转为byte后用base64编码,再把base64编码转为byte报错
var image = LoadImage(@"d :/1.jpg");
// string strBase64 = Convert.ToBase64String(ImageToByteArray(image));
// image.Dispose();
// var image2 = FromBase64(strBase64);
var bytes1 = ImageToByteArray(image);//这里转byte不会报错
var image2 = ByteArrayToImage(bytes1);
var bytes = ImageToByteArray(image2);//这里转byte会报错
}
public Image LoadImage(string strFile)
{
var image = Image.FromFile(strFile);
return image;
}
public Image FromBase64(string strFile)
{
byte[] bytes = Convert.FromBase64String(strFile);
Image image = ByteArrayToImage(bytes);
return image;
}
public static byte[] ImageToByteArray(Image image)
{
using (MemoryStream ms = new MemoryStream()){
Debug.WriteLine(image.RawFormat);
image.Save(ms,image.RawFormat);//任何图片都会报错,即使image. RawFormat格式是jpgl
//image.Save(ms,ImageFormat. Png);//如果用这句不会报错,不知原因,即使图片不是PNG格式
return ms.ToArray();
}
}
public static Image ByteArrayToImage(byte[] bytes)
{
if (bytes == null)
{
return null;
}
using (MemoryStream ms = new MemoryStream(bytes))
{
return Image.FromStream(ms);
}
}
解决
正在探索……
原因
正在探索……
参考资料
本文会经常更新,请阅读原文: https://dashenxian.github.io/post/%E5%9B%BE%E7%89%87%E4%BF%9D%E5%AD%98%E5%88%B0%E6%B5%81%E6%8A%A5%E9%94%99 ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 小神仙 (包含链接: https://dashenxian.github.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 (125880321@qq.com) 。