V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ShutTheFu2kUP
V2EX  ›  Java

Java 后端绘图有什么比较节省内存的方法吗?

  •  
  •   ShutTheFu2kUP · 2020-04-26 17:08:50 +08:00 · 3028 次点击
    这是一个创建于 1432 天前的主题,其中的信息可能已经有所发展或是发生改变。
    之前就是因为有内存占用过高的问题改成后端,但是现在又有需求在后端画,不知道有没有啥节省内存的三方库等等。
    21 条回复    2020-04-28 18:39:25 +08:00
    guyeu
        1
    guyeu  
       2020-04-26 17:36:38 +08:00
    诡异的需求。。
    mseasons
        2
    mseasons  
       2020-04-26 17:37:23 +08:00
    需求很模糊啊,什么样的绘图,前端传一定的参数,后端返回一个图片这样子的吗?

    节省内存就限制并发的画图数量吧?
    dcalsky
        3
    dcalsky  
       2020-04-26 17:37:51 +08:00 via Android
    python 用 pillow node 用 node-canvas java 无解
    ShutTheFu2kUP
        4
    ShutTheFu2kUP  
    OP
       2020-04-26 17:57:23 +08:00 via iPhone
    @guyeu 后端处理数据,某些符合要求的数据需要生成一张图片,需求没说清楚确实挺奇怪的..
    ShutTheFu2kUP
        5
    ShutTheFu2kUP  
    OP
       2020-04-26 17:58:47 +08:00 via iPhone
    @mseasons 跟前端无关,如果是前端传过来的参数直接让前端 canvas 画就行了,关键就是这些数据是要后端批量处理的...
    ShutTheFu2kUP
        6
    ShutTheFu2kUP  
    OP
       2020-04-26 17:59:02 +08:00 via iPhone
    @dcalsky 行吧😂
    gz911122
        7
    gz911122  
       2020-04-26 18:05:53 +08:00
    如果只是把数据填到图上的话可以用 svg, 当做 xml 替换文本就行了
    内存占用少得多.
    ShutTheFu2kUP
        8
    ShutTheFu2kUP  
    OP
       2020-04-26 18:21:51 +08:00
    @gz911122 确实是把数据填到图上,谢谢大佬,我去试试
    xcstream
        9
    xcstream  
       2020-04-26 18:29:29 +08:00
    c++扩展 重复使用内存
    ShutTheFu2kUP
        10
    ShutTheFu2kUP  
    OP
       2020-04-26 18:37:46 +08:00 via iPhone
    @xcstream C 艹忘的差不多了,重新看开发周期来不及😂
    guyeu
        11
    guyeu  
       2020-04-27 10:36:35 +08:00
    说需求诡异是因为这个图片如果最终给前端展示,那么由前端根据数据生成图片即可。。为什么一定要后端生成图片呢。。
    a1438861827
        12
    a1438861827  
       2020-04-27 11:11:31 +08:00
    大概是因为有的数据不想直接给前端了
    a1438861827
        13
    a1438861827  
       2020-04-27 11:14:03 +08:00
    例如我们有些历史记录的数据需要做成折线图,但是不方便直接将数据给前端生成折线图,所以得在后端生成个图片给前端。暂时没有想到好解决的办法
    iminto
        14
    iminto  
       2020-04-27 11:32:44 +08:00
    ImageMagick for java
    ShutTheFu2kUP
        15
    ShutTheFu2kUP  
    OP
       2020-04-27 18:45:02 +08:00 via iPhone
    @guyeu 不是给前端的,是要上传到 OSS,然后需要的时候用下载的
    ShutTheFu2kUP
        16
    ShutTheFu2kUP  
    OP
       2020-04-27 18:45:29 +08:00 via iPhone
    @iminto 好的,我回去搜看看
    ShutTheFu2kUP
        17
    ShutTheFu2kUP  
    OP
       2020-04-27 18:46:34 +08:00 via iPhone
    @a1438861827 不是不想给前端,是这个需求就是要后端处理完上传到 OSS,然后有需求的人员自己下载
    guyeu
        18
    guyeu  
       2020-04-27 22:28:32 +08:00
    @ShutTheFu2kUP #15 哦哦 那么估计就是这个教程了。。你没有说要画什么图,所以只能提供比较通用的方案。。https://docs.oracle.com/javase/tutorial/2d/images/drawonimage.html
    ShutTheFu2kUP
        19
    ShutTheFu2kUP  
    OP
       2020-04-27 23:57:33 +08:00 via iPhone
    @guyeu BuffetedImage 我已经会用了,就是这个内存占用和 CPU 占用比较高,总之谢谢啦😂
    gz911122
        20
    gz911122  
       2020-04-28 09:53:44 +08:00
    @ShutTheFu2kUP svg 的方案可行吗
    对于你这个业务
    ShutTheFu2kUP
        21
    ShutTheFu2kUP  
    OP
       2020-04-28 18:39:25 +08:00 via iPhone
    @gz911122 搜了一下没太看懂,时间原因直接上 BufferedImage 画了,主管说如果性能实在太差再另想办法了😅
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4087 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 05:21 · PVG 13:21 · LAX 22:21 · JFK 01:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.