html转png过程

博客主要讲述了在使用Java将HTML转换为PNG过程中遇到的问题,包括Java2Render库的一个bug,该bug导致生成图片后文件被锁定无法进行IO操作,需要手动管理文件流。另外提到了命名空间错误可能由依赖包版本不正确引起,特别是xalan错误。最后,作者分享了项目中因xalan包版本冲突的临时解决方案,即通过排除依赖来确保使用单一版本的包。
摘要由CSDN通过智能技术生成

 

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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值