java 渐进式_JAVA转换jpg图片为渐进式图片
很早之前看到一篇《web前端图片极限优化策略》,了解有jpg分为baseline-jpeg和preogressive-jpeg。
具体的区别如下:
baseline-jpeg:
在文件较大或者网络下载速度较慢的情况下,用户在浏览器端看到图片被一行行加载的效果。
preogressive-jpeg:
在文件较大或者网络下载速度较慢的情况下,用户在浏览器端先看到整个图片的模糊轮廓,随着扫描次数的增加,图片变得越来越清晰。目前百度图片就是用此种方式。
用JAVA转换的相应代码如下:
package com.tuzki.sannychan;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;
public class ProgressiveJPEG {
public static void main(String[] args) throws Exception {
File file=new File("D:/Picture/pj.jpg");
BufferedImage image = ImageIO.read(file);
Iterator it = ImageIO.getImageWritersByFormatName("jpeg");
ImageWriter writer=null;
while(it.hasNext()) {
writer=it.next();
break;
//System.out.println(it.next());
}
if(writer!=null) {
ImageWriteParam params = writer.getDefaultWriteParam();
params.setProgressiveMode(ImageWriteParam.MODE_DEFAULT);
//params.setCompressionQuality(0.8f);
ImageOutputStream output = ImageIO.createImageOutputStream(new File("D:/Picture/pj-p.jpg"));
writer.setOutput(output);
writer.write(null,new IIOImage(image,null,null), params);
output.flush();
writer.dispose();
System.out.println("ok");
}
}
}
用linux命令可以查看jpeg图片是否为渐进式图片:
//转换前,结果为:None,表明非渐进式
[root@master1 ~]# identify -verbose pj.jpg | grep Interlace
Interlace: None
//转换后,结果为:JPEG,表明是渐进式
[root@master1 ~]# identify -verbose pj-p.jpg | grep Interlace
Interlace: JPEG
用浏览器测试:
将图片放到tomcat目录的webapps\examples目录下,然后使用chrome访问该图片
http://127.0.0.1:8084/examples/pj-p.jpg
用F12打开调试窗口,在network页面选择网络环境为GPRS,然后刷新页面,可以比较清晰感受到图片由模糊逐渐清晰的过程。
用这种方式展示图片的用户体验较好。
java 渐进式_JAVA转换jpg图片为渐进式图片相关推荐
- java+解析png+gif图片_Java 转换png jpg gif格式图片的相互转换的实现
利用JDK原生支持对png jpg gif格式图片做相互转换,结合脚本就可以达到批量处理的能力,比PS来的快啊!而且是JAVA代码 在Windows和Linux上都可以用. import java.a ...
- java网页快照_java网页快照-网页转存为图片
java网页快照-网页转存为图片 个人觉得免费的java实现方式,最方便的网页快照生成方式.可以生成大型网页的快照.非常棒! 使用代码前需要导入 jar包.需要三个jar包 :swt-3.6M3-wi ...
- java 获取文件大小_利用百度AI OCR图片识别,Java实现PDF中的图片转换成文字
序言:我们在读一些PDF版书籍的时候,如果PDF中不是图片,做起读书笔记的还好:如果PDF中的是图片的话,根本无法编辑,做起笔记来,还是很痛苦的.我是遇到过了.我们搞技术的,当然得自己学着解决现在的痛 ...
- java pdf文件转换图片,pdf文件转图片(java实现)
项目中pdf文件太大,在手机端打开缓慢.需要将pdf文件转换成图片.加载比较快,增加用户体验.话不多说,直接上干货. 一.在pom引入依赖的jar org.apache.pdfbox fontbox ...
- ImageMagick将图片转为渐进式jpeg(progressive jpeg)
# 基本JPEG和渐进JPEG 目前有两种主流的jpeg图片格式.分别是baseline jpeg 和progressive jpeg. baseline 的刷新是从上到下.一次刷新. progres ...
- 基于java的格式转换,word 转 pdf、word 转图片、office 格式转换、在线文件预览
一.项目简介 不管你是java程序员.c++程序员,python程序员,在开发项目中肯定遇到过格式转换的问题,如何轻松搞定格式转换的问题呢?当然是百度啦!面向百度编程已经成为当下程序员的日常操作. 基 ...
- Java接受前端的base64,转换失败。base64转图片互相转换
spring boot前后端vue,base64转图片互相转换 vue就不展示了,下边只展示Java中互相转换的例子. Java实现图片转化成base64字符串 //图片转化成base64字符串 pu ...
- JAVA实现bmp转换JPEG_Java gif图片转换为jpg格式
下面通过代码给大家介绍Java gif图片转换为jpg格式,具体代码如下所示: if(fileName.toLowerCase().endsWith(".gif")){//由于头像 ...
- java水印_Java实现给图片添加图片水印,文字水印及马赛克的方法示例
本文实例讲述了Java实现给图片添加图片水印,文字水印及马赛克的方法.分享给大家供大家参考,具体如下: 可以在eclipse中新建个Utils类,把以下代码复制进去直接使用,以下方法实现单个或多个水印 ...
最新文章
- python学到什么程度可以做兼职-Python学到什么程度才可以去找工作?掌握这4点足够了!...
- python输入输出-2. Python中的基本输入、输出、格式化输出
- python程序设计实验教程 翟萍 第五章答案_Python程序设计实验教程
- HTTP1.0、HTTP1.1和HTTP2.0的区别
- php井字游戏代码_PHP初级笔试题:Tic-Tac-Toe(n阶井字棋)判断胜负
- bool类型_Python基本数据类型之Number
- git缓冲区查看_git原理学习记录:从基本指令到背后原理,实现一个简单的git
- stringbuilder_string和stringBuilder的区别
- java通过异常传递消息_如何消除'Failed to load IMAP envelope'消息传递异常?
- 理解Android编译命令
- 以太坊概念知识入门篇
- FastAPI 对用户文件的管理(上传、下载、删除)
- 数据结构C语言版 学习整理
- Socket通讯之UDP
- BT5的 U盘启动 制作
- Linux:软硬链接
- Python:实现max non adjacent sum最大非相邻和算法(附完整源码)
- 30ea什么意思_ea阶段是什么?你未必全知道!
- linux命令前期记不住,linux前期 - 浪里小白龙l的个人空间 - OSCHINA - 中文开源技术交流社区...
- MySQL 8.0的预研清单和计划
热门文章
- leetcode 575. 分糖果(Java版)
- kubernetes入门到精通(一):内容编排与k8s介绍,集群构建教程,如何开启dashboard
- 【PAT甲级 最长公共子串】1007 Maximum Subsequence Sum (25 分) C++ 全部AC
- JMM和底层实现原理
- 2pc_two phase commit详情
- 【两种方法】基础实验4-2.7 修理牧场 (25 分)
- 【一步到胃解决】Several ports (8005, 8080, 8009) required by Tomcat v9.0 Server at localhost are already
- 黑盒测试的用例设计方法
- [leetcode] 144.二叉树的前序遍历
- 部署Squid 代理服务器(内含传统、透明代理服务器的配置、ACL访问控制、日志分析、反向代理)