在Java中流式传输图像格式转换和调整大小
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在Java中流式传输图像格式转换和调整大小,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1181字,纯文字阅读大概需要2分钟。
内容图文
![在Java中流式传输图像格式转换和调整大小](/upload/InfoBanner/zyjiaocheng/772/5821ed3324254dff967d2f5bd21edfb8.jpg)
所以,假设我想在Java中将一些PNG重新编码为JPEG.图像具有极高的分辨率,例如10 000 x 10 000px.使用“标准”Java映像API编写器和读取器,您需要在某些时候将整个映像解码到RAM中,这会占用极大的RAM空间(数百MB).我一直在寻找其他工具如何做到这一点,我发现ImageMagick使用磁盘像素存储,但这似乎对我的需求来说太慢了.所以我需要的是Tru streaming streamder.通过真正的流式传输,我的意思是通过chuncks或bin来读取和处理数据,而不仅仅是将流作为输入,而是事先对其进行解码.
现在,首先是背后的理论 – 在JPEG和PNG算法下,甚至可以使用流来实现这一点,或者说在数据箱中呢?所以不需要在内存(或其他存储)中编码整个图像?在JPEG压缩中,前几个阶段可以在流中完成,但我相信Huffman编码需要在量化后构建整个值概率树,因此需要分析整个图像 – 因此整个图像需要事先解码,或者以某种方式按需解码按地区划分.
如果能够实现以上这个黄金问题,是否有任何Java库可以以这种方式实际工作?并节省大量的RAM?
解决方法:
如果我创建一个10,000 x 10,000 PNG文件,充满不可压缩的噪音,使用ImageMagick如下:
convert -size 10000x10000 xc:gray +noise random image.png
我看到ImageMagick使用675M的RAM来创建最终的572MB文件.
我可以将它转换为带有这样的vips的JPEG:
vips im_copy image.png output.jpg
和vips在转换时使用不超过100MB的RAM,并且在4年左右的合理规格iMac上花费7秒 – 尽管使用SSD.
内容总结
以上是互联网集市为您收集整理的在Java中流式传输图像格式转换和调整大小全部内容,希望文章能够帮你解决在Java中流式传输图像格式转换和调整大小所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。