本文实例讲述了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实现的上传并压缩图片功能【可等比例压缩或原尺寸压缩】...相关推荐

  1. ajax表单图片,js中使用ajax上传一个带有图片的表单数据

    function save() { var formData = new FormData(); if( $('#file')[0].files.length>0){ formData.appe ...

  2. linux禁止客户端上传文件_图片/文件上传如此简单|macOS 图床客户端 uPic

    前言 相信很多人在写作(特别是需要多平台发布)的时候都会因为插图而增加工作量: 平台图片外链不允许在网站外部访问. 使用云图床服务上传流程复杂. 那么这些问题有没有办法解决呢,答案肯定是"有 ...

  3. mui ajax 文件上传,MUI的图片上传和压缩

    MUI的上传图片目前知道有两种方式,一种见前面文章中关于图片裁切时使用的base64作为字符串上传,另外一种则是本篇章中所使用的plus.uploader方式,它是一种真正意义上的文件上传,我们可以使 ...

  4. layui实现文件压缩上传_基于SSM框架、Layui的多文件上传、包括图片,压缩包,音频等文件(与数据库挂钩) - 爱秧博客...

    写在前面:当初为了实现一个多文件上传可是费了一番功夫,经过我日日夜夜的百度咨询,写了好几种方法,最终还是没能解决问题.我可以很负责任的告诉你,你去百度上不管你形容有多好,只要是涉及多文件,就会查到Mu ...

  5. html5 图片上传,支持图片预览、压缩、及进度显示,兼容IE6+及标准浏览器

    原文:html5 图片上传,支持图片预览.压缩.及进度显示,兼容IE6+及标准浏览器 以前写过上传组件,见 打造 html5 文件上传组件,实现进度显示及拖拽上传,兼容IE6+及其它标准浏览器,对付一 ...

  6. java 图片上传_java web图片上传和文件上传实例

    本篇文章主要介绍了java web图片上传和文件上传实例,具有一定的参考价值,有需要的可以了解一下. 图片上传和文件上传本质上是一样的,图片本身也是文件.文件上传就是将图片上传到服务器,方式虽然有很多 ...

  7. okhttp3图片压缩上传_支持 图片压缩、PDF压缩 合并 分割的网址、极力推荐、超奈斯...

    今天给大家分享的是一个可以进行图片压缩,PDF文件编辑的好用网址. 名称:docsmall 大家有没有那种因为上传图片时体积过大,需要缩小,但找半天也找不到压缩工具的时候. 这个网址小编用了很长时间了 ...

  8. Java MultipartFile实现文件上传并为图片加上水印(二)

    防止走丢~~欢迎大家留言收藏点赞 在上一篇我们已经实现了文件的上传,那么如果对于图片的上传,我们要给图片加上我们需要的水印信息,比如图片的上传人,上传地点等信息,此时我们为上传功能再新增水印功能. 最 ...

  9. java实现图片上传_java实现图片的上传和展示

    一.注意事项: 1,该项目主要采用的是springboot+thymeleaf框架 2,代码展示的为ajax完成图片上传(如果不用ajax只需要改变相应的form表单配置即可) 二.效果实现: 1,页 ...

最新文章

  1. (0031) iOS 开发之图片压缩
  2. Color Tint
  3. 【Linux】sudo用户权限管理
  4. php算法台阶,php如何解决青蛙跳台阶的问题(代码)
  5. python爬取淘宝数据魔方_淘宝数据魔方技术架构解析
  6. html流光按钮,【CSS】css实现流光效果-按钮流光显示效果-自发光
  7. cocos编译java时改变使用的javac的版本
  8. 昨天一冲动,给头儿说留所了。。。
  9. 动态规划之编辑距离问题
  10. python去除停用词_python jieba分词如何去除停用词
  11. 美式英语 [t] 的发音
  12. 古文觀止卷七_獲麟解_韓愈
  13. 微信客户管理方式及如何微信客户管理
  14. ProcessingJoy —— 油画笔触【JAVA】
  15. 无线安全专题_破解篇03--打造个人字典
  16. 工厂方法模式、简单工厂模式、抽象工程模式
  17. 计算机控制系统的框图,计算机控制系统软件框图
  18. 从大一时成绩倒数,到毕业后入职网易,回顾一路走来的艰辛
  19. Go 快速起步:创建 WebSocket 服务器(聊天室)
  20. 宜人贷 PaaS 数据服务平台Genie 简介(一)

热门文章

  1. PAT A1081 Rational Sum ——垂死病中惊坐起
  2. Linux ARM平台开发系列讲解(自旋锁) 3.3.1 Linux内核自旋锁描述
  3. android usb调试无法连接电脑,安卓手机USB连接不上电脑,该怎么处理,手机里开发者选项已经勾选USB调试。...
  4. css垂直+水平导航栏代码实例
  5. PS 替换图片上的字
  6. 996?DBQ,爱莫不打卡 | 精彩传送门
  7. Android运行jython,适用于Android的Jython
  8. 电信CDMA PDU短信号码字段编码转换的python实现
  9. 网络与计算机加密解密驱动,嵌入RSA加密算法网络加密卡驱动程序的实现
  10. 收藏|北大生信平台单细胞分析、染色质分析视频和PPT分享