Graphic2D能动态调整画布的大小吗?
-
如题,试图使用Grahic2D类把JSON里提取到的大量数据渲染到一张图片上,但是JSON数据变化性比较大,某个字段可能有10000条数据,也可能有8000条,这中间还有可能因为数据比较长产生换行,所以没法一开始就计算好尺寸,我想让画布可以随时动态调整大小。比如画笔y坐标超过某个值的时候就自动向右扩展一块,有什么方法吗
-
-
用base64编码图片传输数据再解码出图片来渲染到Graphic2D上呢?
-
画布创建后并不能修改大小(有两种方案 1:先生成一个默认大小的画布,绘制时如果画布不够,就新建个大点的画布,并把之前的画布绘制到新画布上。2:提前大概计算一下数据所需的大小,宽就用字体大小乘字数,高就用行数乘字体大小再乘个1.5左右(行间距),宽高最好最后再加上一些冗余。可以不用太精细,等到绘制的时候再精细计算占用大小,最后裁剪画布。
-
@XDorz 假如我的画笔y坐标超过了10000,我就把已经写入好的部分编码成base64,然后再开一张新的画布(宽度为2倍),然后把编码成base64的解码成图片渲染到这个画布上,是这个意思吗。
-
@Colter23
如果是少量数据的话其实方法2加点预留足够的,但是数据变化性和量实在有点大,有的很短,有的很长,且不说精细计算,就算估计也不是很好估计。
我试一下方法1吧 -
@Dituon mark,后面细细研究一下大佬的代码
-
这有什么不好估计的(还有为啥要转成base64.。BufferedImage可以直接当成图片绘制的(
-
如果数据实在太多,转成图片不是很好。可能造成图片过于庞大(像你说的动不动就几千条数据,那图片要多大啊(
-
也许用浏览器绘制图片也是可行的办法,如果需要经常绘制图片可以将浏览器放到后台保持运行降低进程启动开销
-
@Colter23 BufferImage好像Heap Memory容易爆掉,不好估计是因为难以预料哪一个长度比较长会换行,而且数据比较多,也不好估计范围,全部按照最大的来就会爆内存或者浪费留下很多空白
-
@Colter23 成千上万条数据是我夸张了, 按行数来说的话确实得有几百或者一千行左右。我试了一下尺寸大概能到5000*10000像素(大概5 6MB这样)这么大。
其实想转成图片就是因为字符太多,用消息发有点不方便2333 -
@RainChan mark,我去学习一下这个方法
-
@RainChan 请教一下大佬,用浏览器绘制图片是怎么做的?该需要用到什么工具呢或者有什么搜索关键词吗
-
@Colter 我尝试了一下大佬说的每次新建更大的画布然后把之前的画布绘制到新画布的方法,结果内存爆了……
-
@N70_ 论坛有人写过
-
@RainChan 我找到了这2个:
Mirai Selenium Plugin,前置插件,用于使用Selenium调用浏览器进行截图等操作
还有一个是楼上大佬项目里使用的Skiko
是这两个嘛 -
@N70_ 是
-