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();
            }
  • 相关阅读:
    面向对象 (11)求交并集 判断字符形式
    软件工程 课程总结
    面向对象 (10)正则判邮箱
    面向对象 (9)计算时间差 找随机数范围内规律
    面向对象 (8)字符串出现字符个数统计 字母组成回文串判定
    面向对象 (7)中介买房 平均数异常处理
    面向对象 (6)买房付首款
    第16周作业
    第15周作业
    迟到的第14周作业
  • 原文地址:https://www.cnblogs.com/changsen/p/9468255.html
Copyright © 2011-2022 走看看