bbsnan 2023-02-23 16:29 采纳率: 0%
浏览 20

10万张照片一起转base64时,内存不足

10万张照片一起转base64时,内存不足,后面的就无法编码。


void start(string dir, string dir64)
        {
            string base64;
            int cnt = 0;
            int fileno = 0;
            if (!textBox1.Text.Equals(""))
                fileno = int.Parse(textBox1.Text.ToString());
            DirectoryInfo d = new DirectoryInfo(dir);
            FileSystemInfo[] fsinfos = d.GetFileSystemInfos();

            FileInfo myfile = new FileInfo(dir64 + "\\base64_" + fileno.ToString() + ".txt");
            StreamWriter sw = myfile.CreateText();
            FileInfo myfileerror = new FileInfo(dir64 + "\\base64_error.txt");
            StreamWriter sw2 = myfileerror.CreateText();
            foreach (FileSystemInfo fsinfo in fsinfos)
            {
                cnt++;
                if (cnt % 10000 == 0)
                {
                    sw.Flush();
                    sw.Close();
                    fileno++;
                    myfile = new FileInfo(dir64 + "\\base64_" + fileno.ToString() + ".txt");
                    sw = myfile.CreateText();
                    GC.Collect();
                }
                if (fsinfo is DirectoryInfo)     //判断是否为文件夹
                {
                    start(fsinfo.FullName, dir64);//递归调用
                }
                else
                {
                    try
                    {
                        base64 = ImageFile2Base64(fsinfo.FullName, fsinfo.Name);//输出文件的全部路径
                        sw.WriteLine(cnt.ToString() + "," + fsinfo.FullName + "," + base64);
                        
                    }
                    catch (Exception e)
                    {
                        sw2.WriteLine(cnt.ToString() + "," + fsinfo.FullName + ",error:"+e.ToString());
                    }
                }
                label3.Text = "已处理" + cnt.ToString() + "条";
            }
            sw.Close();
            sw2.Close();
        }
  • 写回答

3条回答 默认 最新

  • sleep_i_like 2023-02-23 16:42
    关注

    可以在每次编码10000张照片时,将编码结果写入文件,然后清空内存,再继续编码下一批照片。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月23日

悬赏问题

  • ¥15 更换了一个新的win10系统,再下载VS时碰到的问题,是C++组件的?
  • ¥15 关于罗技鼠标宏lua文件的问题
  • ¥15 halcon ocr mlp 识别问题
  • ¥15 已知曲线满足正余弦函数,根据其峰值,还原出整条曲线
  • ¥20 无法创建新的堆栈防护界面
  • ¥15 sessionStorage在vue中的用法
  • ¥15 wordpress更换域名后用户图片头像不显示
  • ¥15 如何在ubunto上安装CEF (Chromium Embedded Framework),并且基于qt实现打开一个web
  • ¥30 AD9854 为什么输出波形幅度受限,AI机器人勿扰
  • ¥15 如何在ubunto上安装CEF (Chromium Embedded Framework