MurgaLua 0.7.5 以及 fltk 函数 saveAsPng() 的使用

问题描述 投票:0回答:1

我被个人代码murgaLua 0.7.5(操作系统Linux Lubuntu LTS,但它应该在Windows中工作)所困扰,它在fltk图形窗口(由代码创建)中捕获图表图像并将其写入png格式。不幸的是,这个 MurgaLua 特定的 PNG 图像写入函数 saveAsPng() 似乎比直方图表的计算慢,并且由于我有几个图要写,要么我有“核心转储”消息,要么只有最后一个图是保存,或者,这是当前的解决方案,显示 fltk“模态窗口”以延迟操作,并且我在磁盘上获取不同的图像。问题是数量:我想编写一份包含可能超过 500 个图表的自动报告!测试数据文件是一个超过450 MB的OpenData文件,可以在这里下载: https://open-data-assurance-maladie.ameli.fr/medicaments/download_file2.php?file=Open_MEDIC_Base_Complete/OPEN_MEDIC_2023.zip 完整的 MurgaLua 代码在这里 https://github.com/mterras01/murgaLua/blob/main/statsoncsv_next2.lua 如果有人有想法,我很感兴趣!谢谢!

以下功能已完全运行

function read_Image()
   pwindow:make_current()
   Fl:check()
   Fl:flush()
   imageString = fltk.fl_read_image(0, 0, width_pwindow, height_pwindow)
   Fl:check()
   Fl:flush()
   image2 = fltk:Fl_RGB_Image(imageString, width_pwindow, height_pwindow, 3, 0)
   Fl:check()
   Fl:flush()
   fileName = title .. ".png"
   image2:saveAsPng(fileName)
end

它是从 for 循环(连续图像)中调用的。 (我知道 murgaLua 是一种古老的语言(我 59 岁),由 John de Murga 编写)。

我成功地可以保存我所有的图表

  Fl:check()
  pwindow:show()
  pwindow:redraw()
  Fl:flush()
  pwindow:set_modal()
  if fltk:fl_choice("Save Charts or not ?", "No", "Yes", nil) == 1 then
     read_Image()
  end
  pwindow:set_non_modal()

但每次都要点击保存。这不是构建 500 张图像报告的好方法。

lua fltk
1个回答
0
投票

所以我找到了我的问题的答案。再次感谢 Albrecht Sclosser(danke sehr!)的建议。似乎(一个)解决方案是打开一个倒计时自动关闭 fltk-modal-window 来同步图形(绘制图表)和计算任务(读取转换每个图表的图像并将其另存为文件)。这完全适用于 Linux 操作系统,但在 Windows 上有 45 秒的延迟(在今天的版本中,工作正在进行中,如果有兴趣,请参阅我的 github)...用 python 编写这个脚本更容易,但 murgaLua 是这样的创业板。

© www.soinside.com 2019 - 2024. All rights reserved.