string base64 = context.Request["img64"].Replace("data:image/png;base64,", "");
byte[] arr = Convert.FromBase64String(base64);
using (MemoryStream ms = new MemoryStream(arr))
{
using (Bitmap bmp = new Bitmap(ms))
{
bmp.Save(DetectionDirectory(context, imgPath) + "DesignChart.png", ImageFormat.Jpeg);
}
}
图片很大,大约20000px乘以20000px,导致Base64字符串很长,new BitMap的时候就报了outofMemoryException。
请问,如何处理能成功保存图片文件?
12 个解决方案
#1
再买根内存
#2
大约20000px乘以20000px
额额额。。不过也没有多大啊 顶多也就是几十M
此时 你的Arr长度有多大?。。。
重点是 你的Arr 就是你的图像数据了 你可以直接保存了
(using FileStream fs = new ("test.png",...)) { fs.WriteBytes(Arr,0,Arr.Length); }
额额额。。不过也没有多大啊 顶多也就是几十M
此时 你的Arr长度有多大?。。。
重点是 你的Arr 就是你的图像数据了 你可以直接保存了
(using FileStream fs = new ("test.png",...)) { fs.WriteBytes(Arr,0,Arr.Length); }
#3
别用图片类,直接用文件流保存
#4
晕!你的 arr 直接保存到文件就行了,还要 Bitmap 干什么啊?
#5
#1好机智的说
#6
保存只要有字节就行了,确实不是一定要用Bitmap
#7
不是不一定,而是没必要。这个时候直接用BYTE转换成文件即可
但是未来如果这张图片的处理仍然会出现这样的问题,这图片该有多大啊,我擦
但是未来如果这张图片的处理仍然会出现这样的问题,这图片该有多大啊,我擦
#8
现在保存时没问题了,读取出来处理的时候依然是内存不足
#9
加内存。提交exe的使用内存限制。当然以上都是吹牛B的
#10
上传图片到服务器。数据库只存路径。
#11
展开成位图需要 1.5G,确实比较大
既然图片远大于屏幕尺寸,那为何不考虑切成小图再处理呢
既然图片远大于屏幕尺寸,那为何不考虑切成小图再处理呢
#12
在开发一个图片生成的软件,根据参数生成一个整体架构图,再分割成很多的局部图。不用位图有其它方式吗
#1
再买根内存
#2
大约20000px乘以20000px
额额额。。不过也没有多大啊 顶多也就是几十M
此时 你的Arr长度有多大?。。。
重点是 你的Arr 就是你的图像数据了 你可以直接保存了
(using FileStream fs = new ("test.png",...)) { fs.WriteBytes(Arr,0,Arr.Length); }
额额额。。不过也没有多大啊 顶多也就是几十M
此时 你的Arr长度有多大?。。。
重点是 你的Arr 就是你的图像数据了 你可以直接保存了
(using FileStream fs = new ("test.png",...)) { fs.WriteBytes(Arr,0,Arr.Length); }
#3
别用图片类,直接用文件流保存
#4
晕!你的 arr 直接保存到文件就行了,还要 Bitmap 干什么啊?
#5
#1好机智的说
#6
保存只要有字节就行了,确实不是一定要用Bitmap
#7
不是不一定,而是没必要。这个时候直接用BYTE转换成文件即可
但是未来如果这张图片的处理仍然会出现这样的问题,这图片该有多大啊,我擦
但是未来如果这张图片的处理仍然会出现这样的问题,这图片该有多大啊,我擦
#8
现在保存时没问题了,读取出来处理的时候依然是内存不足
#9
加内存。提交exe的使用内存限制。当然以上都是吹牛B的
#10
上传图片到服务器。数据库只存路径。
#11
展开成位图需要 1.5G,确实比较大
既然图片远大于屏幕尺寸,那为何不考虑切成小图再处理呢
既然图片远大于屏幕尺寸,那为何不考虑切成小图再处理呢
#12
在开发一个图片生成的软件,根据参数生成一个整体架构图,再分割成很多的局部图。不用位图有其它方式吗