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,页 ...
最新文章
- (0031) iOS 开发之图片压缩
- Color Tint
- 【Linux】sudo用户权限管理
- php算法台阶,php如何解决青蛙跳台阶的问题(代码)
- python爬取淘宝数据魔方_淘宝数据魔方技术架构解析
- html流光按钮,【CSS】css实现流光效果-按钮流光显示效果-自发光
- cocos编译java时改变使用的javac的版本
- 昨天一冲动,给头儿说留所了。。。
- 动态规划之编辑距离问题
- python去除停用词_python jieba分词如何去除停用词
- 美式英语 [t] 的发音
- 古文觀止卷七_獲麟解_韓愈
- 微信客户管理方式及如何微信客户管理
- ProcessingJoy —— 油画笔触【JAVA】
- 无线安全专题_破解篇03--打造个人字典
- 工厂方法模式、简单工厂模式、抽象工程模式
- 计算机控制系统的框图,计算机控制系统软件框图
- 从大一时成绩倒数,到毕业后入职网易,回顾一路走来的艰辛
- Go 快速起步:创建 WebSocket 服务器(聊天室)
- 宜人贷 PaaS 数据服务平台Genie 简介(一)
热门文章
- PAT A1081 Rational Sum ——垂死病中惊坐起
- Linux ARM平台开发系列讲解(自旋锁) 3.3.1 Linux内核自旋锁描述
- android usb调试无法连接电脑,安卓手机USB连接不上电脑,该怎么处理,手机里开发者选项已经勾选USB调试。...
- css垂直+水平导航栏代码实例
- PS 替换图片上的字
- 996?DBQ,爱莫不打卡 | 精彩传送门
- Android运行jython,适用于Android的Jython
- 电信CDMA PDU短信号码字段编码转换的python实现
- 网络与计算机加密解密驱动,嵌入RSA加密算法网络加密卡驱动程序的实现
- 收藏|北大生信平台单细胞分析、染色质分析视频和PPT分享