java压缩图片比例quality_Java实现的上传并压缩图片功能【可等比例压缩或原尺寸压缩】...
本文实例讲述了java实现的上传并压缩图片功能。分享给大家供大家参考,具体如下:
先看效果:
原图:1.33M
处理后:27.4kb
关键代码:
package codeGenerate.util;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ImageZipUtil {
public static void main(String[] args) {
zipWidthHeightImageFile(new File("C:\\spider\\3.png"),new File("C:\\spider\\3-1.jpg"),425,638,0.7f);
//zipImageFile(new File("C:\\spider\\2.JPG"),new File("C:\\spider\\2-2.JPG"),425,638,0.7f);
//zipImageFile(new File("C:\\spider\\3.jpg"),new File("C:\\spider\\3-3.jpg"),425,638,0.7f);
System.out.println("ok");
}
/**
* 根据设置的宽高等比例压缩图片文件
先保存原文件,再压缩、上传
* @param oldFile 要进行压缩的文件
* @param newFile 新文件
* @param width 宽度 //设置宽度时(高度传入0,等比例缩放)
* @param height 高度 //设置高度时(宽度传入0,等比例缩放)
* @param quality 质量
* @return 返回压缩后的文件的全路径
*/
public static String zipImageFile(File oldFile,File newFile, int width, int height,float quality) {
if (oldFile == null) {
return null;
}
try {
/** 对服务器上的临时文件进行处理 */
Image srcFile = ImageIO.read(oldFile);
int w = srcFile.getWidth(null);
int h = srcFile.getHeight(null);
double bili;
if(width>0){
bili=width/(double)w;
height = (int) (h*bili);
}else{
if(height&www.cppcns.comdImage(width, height, BufferedImage.TYPE_INT_ARGB);
}else{
buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
}
Graphics2D graphics = buffImg.createGraphics();
graphics.setBackground(new Color(255,255,255));
graphics.setColor(new Color(255,255,255));
graphics.fillRect(0, 0, width, height);
graphics.drawImage(srcFile.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0, 0, null);
ImageIO.write(buffImg, subfix, new File(srcImgPath));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
说明:
1、根据需求大家可以自行设置质量参数quality,到底设置成多少,可以先看下效果在取值;
2、网上通用的方法用的是jdk自带jar包中方法,我这里衍生了一下:用Graphics2D,能够同时处理jpg和png格式;
3、new Color(255,255,255)是白色,等同于WHITE,但是用WHITE 的话,linux下某些图片会有其它色值;
4、main中的宽425和高638可以根据自己的需求自行设置,但是对于长和宽一样的,按照400(小值的值425)*400来处理;
更多java相关内容感兴趣的读者可查看本站专题:《Jawww.cppcns.comva图片操作技巧汇总》、《java日期与时间操作技巧汇总》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》及《Java数据结构与算法教程》。
希望本文所述对大家java程序设计有所帮助。
本文标题: Java实现的上传并压缩图片功能【可等比例压缩或原尺寸压缩】
本文地址: http://www.cppcns.com/ruanjian/java/235084.html
java压缩图片比例quality_Java实现的上传并压缩图片功能【可等比例压缩或原尺寸压缩】...相关推荐
- ajax表单图片,js中使用ajax上传一个带有图片的表单数据
function save() { var formData = new FormData(); if( $('#file')[0].files.length>0){ formData.appe ...
- linux禁止客户端上传文件_图片/文件上传如此简单|macOS 图床客户端 uPic
前言 相信很多人在写作(特别是需要多平台发布)的时候都会因为插图而增加工作量: 平台图片外链不允许在网站外部访问. 使用云图床服务上传流程复杂. 那么这些问题有没有办法解决呢,答案肯定是"有 ...
- mui ajax 文件上传,MUI的图片上传和压缩
MUI的上传图片目前知道有两种方式,一种见前面文章中关于图片裁切时使用的base64作为字符串上传,另外一种则是本篇章中所使用的plus.uploader方式,它是一种真正意义上的文件上传,我们可以使 ...
- layui实现文件压缩上传_基于SSM框架、Layui的多文件上传、包括图片,压缩包,音频等文件(与数据库挂钩) - 爱秧博客...
写在前面:当初为了实现一个多文件上传可是费了一番功夫,经过我日日夜夜的百度咨询,写了好几种方法,最终还是没能解决问题.我可以很负责任的告诉你,你去百度上不管你形容有多好,只要是涉及多文件,就会查到Mu ...
- html5 图片上传,支持图片预览、压缩、及进度显示,兼容IE6+及标准浏览器
原文:html5 图片上传,支持图片预览.压缩.及进度显示,兼容IE6+及标准浏览器 以前写过上传组件,见 打造 html5 文件上传组件,实现进度显示及拖拽上传,兼容IE6+及其它标准浏览器,对付一 ...
- java 图片上传_java web图片上传和文件上传实例
本篇文章主要介绍了java web图片上传和文件上传实例,具有一定的参考价值,有需要的可以了解一下. 图片上传和文件上传本质上是一样的,图片本身也是文件.文件上传就是将图片上传到服务器,方式虽然有很多 ...
- okhttp3图片压缩上传_支持 图片压缩、PDF压缩 合并 分割的网址、极力推荐、超奈斯...
今天给大家分享的是一个可以进行图片压缩,PDF文件编辑的好用网址. 名称:docsmall 大家有没有那种因为上传图片时体积过大,需要缩小,但找半天也找不到压缩工具的时候. 这个网址小编用了很长时间了 ...
- Java MultipartFile实现文件上传并为图片加上水印(二)
防止走丢~~欢迎大家留言收藏点赞 在上一篇我们已经实现了文件的上传,那么如果对于图片的上传,我们要给图片加上我们需要的水印信息,比如图片的上传人,上传地点等信息,此时我们为上传功能再新增水印功能. 最 ...
- java实现图片上传_java实现图片的上传和展示
一.注意事项: 1,该项目主要采用的是springboot+thymeleaf框架 2,代码展示的为ajax完成图片上传(如果不用ajax只需要改变相应的form表单配置即可) 二.效果实现: 1,页 ...
最新文章
- Linux中的信号处理原理
- 【Groovy】map 集合 ( map 集合遍历 | 使用 map 集合的 each 方法遍历 map 集合 | 代码示例 )
- 错误处理: pip install 时候 “Read timed out”
- Ⅴ:zookeeper的相关Java Api
- require引入js vue_请教 关于使用require 引入vue 和公共js的问题
- distinct sql用法_十分钟搞懂SQL数据分析
- 简历推荐_12位AI产品经理
- php输入框形式,文本框有哪两种方式
- MySQL 日志管理、备份与恢复
- 智能手环功能模块设计_基于嵌入式系统智能手环的设计开发
- 服务器准系统diy,“攒”服务器与DIY服务器
- 如何实现 Android 短视频跨页面的流畅续播?
- Pytorch踩坑记:赋值、浅拷贝、深拷贝三者的区别以及model.state_dict()和model.load_state_dict()的坑点
- DanmuPlayer插件获取数据库弹幕——ssm弹幕应用
- 基本算法4.1堆积木详细题解
- 3D建模师的需求到底有多大?以前想都不敢想
- 修改nz-select中的nz-option设置title属性展示内容。
- php面试英文自我介绍范文带翻译,英文自我介绍范文3篇
- Linux学习笔记------java学习
- 自动驾驶 Apollo 源码分析系列,系统监控篇(二):Monitor模块如何监控硬件
热门文章
- 小雅深访 |富国朱少醒最完整的投资逻辑(2017年12月)
- 新手如何利用wordpress建立一个自己的网站
- python内置函数callable用法详解
- python加密解密图形界面_Python笔记-GUI界面设计(tkinter)
- 华为荣耀20和x10比较_荣耀x10和荣耀20哪个好 主要看配置参数对比
- 计算机系统要解决的问题输入,电脑切换不出来输入法,详细教您解决切换输入法的问题...
- 计算机安全会议(学术界)概念普及 ASIACCS2015会议总结(移动安全部分)
- HTML5 img src= 与a href= 的使用
- 开发人员必学!这篇入门你必须了解!搞懂这些直接来阿里入职
- 社会认同:互联网企业家的秘密武器