Java 后端压缩图片
import java.io.*;
import java.util.Date;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.ImageIO;
//import com.sun.image.codec.jpeg.*;
public class ImgCompress {
private Image img;
private int width;
private int height;
@SuppressWarnings("deprecation")
public static void main(String[] args) throws Exception {
System.out.println("开始:" + new Date().toLocaleString());
ImgCompress imgCom = new ImgCompress("C:\\Users\\fh123\\Desktop\\TIM图片20180511172046.jpg");
imgCom.resizeFix(600, 600,"C:\\Users\\fh123\\Desktop\\TIM图片20180511172046.jpg");
System.out.println("结束:" + new Date().toLocaleString());
}
public ImgCompress(String fileName) throws IOException {
File file = new File(fileName);// 读入文件
img = ImageIO.read(file); // 构造Image对象
width = img.getWidth(null); // 得到源图宽
height = img.getHeight(null); // 得到源图长
}
/**
* 按照宽度还是高度进行压缩
*
* @param w
* int 最大宽度
* @param h
* int 最大高度
*/
public void resizeFix(int w, int h,String urlPath) throws IOException {
if (width / height > w / h) {
resizeByWidth(w,urlPath);
} else {
resizeByHeight(h,urlPath);
}
}
/**
* 以宽度为基准,等比例放缩图片
*
* @param w
* int 新宽度
*/
public void resizeByWidth(int w,String urlPath) throws IOException {
int h = (int) (height * w / width);
resize(w, h,urlPath);
}
/**
* 以高度为基准,等比例缩放图片
*
* @param h
* int 新高度
*/
public void resizeByHeight(int h,String urlPath) throws IOException {
int w = (int) (width * h / height);
resize(w, h,urlPath);
}
/**
* 强制压缩/放大图片到固定的大小
*
* @param w
* int 新宽度
* @param h
* int 新高度
*/
public void resize(int w, int h,String urlPath) throws IOException {
// SCALE_SMOOTH 的缩略算法 生成缩略图片的平滑度的 优先级比速度高 生成的图片质量比较好 但速度慢
BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
image.getGraphics().drawImage(img, 0, 0, w, h, null); // 绘制缩小后的图
File destFile = new File(urlPath);
FileOutputStream out = new FileOutputStream(destFile); // 输出到文件流
ImageIO.write(image,"jpg", out);
// 可以正常实现bmp、png、gif转jpg
//JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
//encoder.encode(image); // JPEG编码
out.close();
}
}
Java 后端压缩图片的更多相关文章
- 使用java来压缩图片
使用java来压缩图片,简单几句,清清爽爽 使用0.3的压缩比得到的结果如下(从2.8M压缩到268K,且图片的清晰度看不出明显差别): package carlspringtest; import ...
- java 上传图片压缩图片
package com.bitspace.flame.util; import java.io.File; import java.awt.Image;import java.awt.image.Bu ...
- Java后端实现图片压缩技术
今天来说说图片压缩技术,为什么要使用图片压缩,图片上传不就完事了吗?对的,这在几年前可以这么说,因为几年前还没有现在这么大的并发,也没有现在这么关注性能. 如今手机很多,很多人都是通过手机访问网络或者 ...
- java流压缩图片
整理文档,搜刮出一个Java做图片压缩的代码,稍微整理精简一下做下分享.首先,要压缩的图片格式不能说动态图片,你可以使用bmp.png.gif等,至于压缩质量,可以通过BufferedImage来指定 ...
- java 上传图片 并压缩图片大小
Thumbnailator 是一个优秀的图片处理的Google开源Java类库.处理效果远比Java API的好.从API提供现有的图像文件和图像对象的类中简化了处理过程,两三行代码就能够从现有图片生 ...
- java 上传图片 并压缩图片大小(转)
Thumbnailator 是一个优秀的图片处理的Google开源Java类库.处理效果远比Java API的好.从API提供现有的图像文件和图像对象的类中简化了处理过程,两三行代码就能够从现有图片生 ...
- Java压缩图片的实现类
package com.function; import java.awt.geom.AffineTransform; import java.awt.image.AffineTransformOp; ...
- java上传并压缩图片(等比例压缩或者原尺寸压缩)
本文转载自http://www.voidcn.com/article/p-npjxrbxr-kd.html 先看效果: 原图:1.33M 处理后:27.4kb 关键代码; package codeGe ...
- java中判断图片格式并且等比例压缩图片
最近项目中需要判断上传的图片必须是png,jpg,gif三种格式的图片,并且当图片的宽度大于600px时,压缩图片至600px,并且等比例的压缩图片的高度. 具体的实现形式: 大致的思路是: 判断根据 ...
随机推荐
- gitlab的搭建与汉化
gitlab的搭建:内存最好2G以上 yum -y install curl unzip policycoreutils git wget 安装相关依赖包 所有gitlab rpm包的 ...
- 批量导出存储在msdb库的SSIS包
http://blog.51cto.com/ultrasql/1924464 use msdb go IF OBJECT_ID('msdb.dbo.usp_ExportSSISPkgs') IS NO ...
- traceback说明
一:traceback说明 该模块提供了一个标准接口来提取,格式化和打印Python程序的堆栈跟踪.它完全模仿Python解释器在打印堆栈跟踪时的行为.当您想要在程序控制下打印堆栈跟踪时,这很有用. ...
- string的一些特殊点
无论是String还是new String最终都指向了String constant pool中,只不过是String直接指向了Stringconstant pool中.而new String是在He ...
- 吴裕雄 python 神经网络——TensorFlow 花瓣分类与迁移学习(4)
# -*- coding: utf-8 -*- import glob import os.path import numpy as np import tensorflow as tf from t ...
- mDNS故障排查(译)
WLC上mDNS网关的理解及排查 第一部分:介绍 这篇文档描述了Bonjour协议在WLC上的操作,该文档旨在协助工程师理解该工作流量的原理以及提供故障排查的指导. 第二部分:需求和前提 知识需求: ...
- dp求解各种子串子序列
目录 概念 最长上升子序列 最长连续子串 最长公共子序列 最长公共上升子序列 注:dp可能并不是求解该这些问题的最优算法,这里只是做一个dp 算法的简介. 概念 定义:假设现有一个 string = ...
- TomcatJVM参数优化降低内存使用率(重点)!
JVM是jdk最底层的支柱 做JVM参数优化主要是为了改善服务器性能以及内存使用率 JAVA堆分为三大部分:(新生代.老年代.永久代) ================================ ...
- redhat 7.6 iptables 配置
1.查看iptables默认表(filter) iptables -L -n 2.iptables 默认内链(filter)表三种: INPUT:处理进入防火墙的数据包 FORWARD:源自其他计算机 ...
- tomcat8配置了tomcat-users.xml,报403 Access Denied
配置了tomcat-users.xml之后,重启tomcat服务,仍然访问拒绝. 原因:tomcat8.5 更改之后,仍然访问拒绝. 还需步骤如下: vi /usr/local/tomcat/apac ...