zoukankan      html  css  js  c++  java
  • 关于bitmap储存图片报内存不足的问题

    这几天在js中将canvas作为流进行bitmap保存原始尺寸大小的图片,发生了内存不足,每次报这个错误的时候就要进行重新启动程序,真心恶心到爆了,close()、Dispose()方法全部都用了个便,垃圾回收机制也强制加进去了,依旧没办法,bitmap这个太吃内存了。

    后面突然发现用FileStream写流的方式将图片写入进去后,问题居然解决了,而且生成的图片质量比bitmap生成的质量要好。废话不多,直接上代码

                    dataURL = dataURL.Replace(" ", "+"); //ajax传输过来的数据所有"+"都变成了" ";ajax在传输“+”和“&”时会丢失数据。
                    byte[] arr2 = Convert.FromBase64String(dataURL);
                    string path ="图片的路径";
                    if (System.IO.File.Exists(path))
                    {
                        File.Delete(path);//如果路径中有则先删除
                    }
                    MemoryStream ms = new MemoryStream(arr2);
                    Filestream(ms, path);
     
     public void Filestream(Stream stream, string fileName)
            {
                // 把 Stream 转换成 byte[]
                byte[] bytes = new byte[stream.Length];
                stream.Read(bytes, 0, bytes.Length);
                // 设置当前流的位置为流的开始
                stream.Seek(0, SeekOrigin.Begin);
                // 把 byte[] 写入文件
                FileStream fs = new FileStream(fileName, FileMode.Create);
                BinaryWriter bw = new BinaryWriter(fs);
                bw.Write(bytes);
                bw.Close();
                fs.Close();
            }
  • 相关阅读:
    Djnago中缓存配置(redis配置案例)
    HDU-4717 The Moving Points 三分
    HDU-4716 A Computer Graphics Problem 水题
    HDU-2686 Matrix 多进程DP
    [转]手动开平方的简易方法
    [转]树链剖分
    HUOJ-10857 最大的面积 凸包+DP
    Bnuoj-29359 Deal with numbers 线段树
    HDU-4283 You Are the One 区间DP
    BNUOJ-26586 Simon the Spider 最小生成树+枚举
  • 原文地址:https://www.cnblogs.com/changsen/p/9468255.html
Copyright © 2011-2022 走看看