1. 话不多说,直接贴代码
File htmlfile = new File("4424987.html");
Java2DRenderer renderer = new Java2DRenderer(htmlfile, 1020, 2800);
BufferedImage img = renderer.getImage();
FSImageWriter imageWriter = new FSImageWriter();
imageWriter.setWriteCompressionQuality(1f);
FileOutputStream fileOutputStream = new FileOutputStream("success.png");
imageWriter.write(img, fileOutputStream);
fileOutputStream.close();
其中大部分代码通俗易懂, 比较坑的地方是imageWriter处。 此处为java2Render自身的一个bug。源码中一共提供了两种生成图片的函数。当选择为文件名称的时候,函数会自动生成文件流,但是这个文件流在生成图片后并没有将文件流释放,只释放自己创建的文件流,导致生成图片后当前当前文件一直被加锁,并不能进行io的存取操作。所以正确的做法,是手动生成文件流传入到函数中去,在手动释放。一般正常的操作是不会影响的,因为程序结束,虚拟机会自动回收这段内存,但在当程序还没有结束的时候就需要删除文件时,这个就会产生很大的问题,所以可以注意一下。
ios = ImageIO.createImageOutputStream(os);