java等比压缩图片工具类
工具类
package com.chinaums.abp.util;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
/**
* 图片处理工具类
* JeWang
*/
public class UtilImg {
/**
*
* @param src 要删除的文件
* @param dist 要修改名称的文件
* @param newname 要修改为的名称,不加后缀
* @return
*/
public static boolean delelteAndRenameFile(String src, String dist, String newname) {
File srcfile = new File(src);
if (!srcfile.exists()) {
System.out.println("文件不存在");
return false;
}
File distfile = new File(dist);
if (!distfile.exists()) {
System.out.println("文件不存在");
return false;
}
srcfile.delete();
distfile.renameTo(srcfile);
return true;
}
/**
* 创建图片缩略图(等比缩放)
* @param src 源图片文件完整路径
* @param dist 目标图片文件完整路径
* @param width 高度
* @param height 宽度
*/
public static boolean createThumbnail(String src, String dist, float width,
float height) {
try {
File srcfile = new File(src);
if (!srcfile.exists()) {
System.out.println("文件不存在");
return false;
}
BufferedImage image = ImageIO.read(srcfile);
// 获得缩放的比例
double ratio = 1.0;
// 判断如果高、宽都不大于设定值,则不处理
if (image.getHeight() > height || image.getWidth() > width) {
if (image.getHeight() > image.getWidth()) {
ratio = height / image.getHeight();
} else {
ratio = width / image.getWidth();
}
}
// 计算新的图面宽度和高度
int newWidth = (int) (image.getWidth() * ratio);
int newHeight = (int) (image.getHeight() * ratio);
BufferedImage bfImage = new BufferedImage(newWidth, newHeight,
BufferedImage.TYPE_INT_RGB);
bfImage.getGraphics().drawImage(
image.getScaledInstance(newWidth, newHeight,
Image.SCALE_SMOOTH), 0, 0, null);
FileOutputStream os = new FileOutputStream(dist);
ImageIO.write(bfImage, "jpg", os);
os.close();
System.out.println("创建缩略图成功");
return true;
} catch (Exception e) {
System.out.println("创建缩略图发生异常" + e.getMessage());
return false;
}
}
}
使用
if(UtilImg.createThumbnail(filePath,filePathTmp, Float.parseFloat(image_width),Float.parseFloat(image_height))){
UtilImg.delelteAndRenameFile(filePath,filePathTmp,uuidStr);
}
java等比压缩图片工具类的更多相关文章
- 压缩图片工具类,压缩100KB以内拿走直接用
最近遇到自拍上传图片过大问题,很烦恼,所以自己写了一个压缩图片的工具类使用,自测效果很不错,可以压缩到KB以内,像素还可以分辨清晰 下面Java代码奉上: import lombok.extern.s ...
- Java图片工具类,完成图片的截取和任意缩放
package com.common.util; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Renderin ...
- 拍照、本地图片工具类(兼容至Android7.0)
拍照.本地图片工具类:解决了4.4以上剪裁会提示"找不到文件"和6.0动态授予权限,及7.0报FileUriExposedException异常问题. package com.hb ...
- Android--很实用的图片工具类
import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; imp ...
- Java操作文件夹的工具类
Java操作文件夹的工具类 import java.io.File; public class DeleteDirectory { /** * 删除单个文件 * @param fileName 要删除 ...
- Java汉字转成汉语拼音工具类
Java汉字转成汉语拼音工具类,需要用到pinyin4j.jar包. import net.sourceforge.pinyin4j.PinyinHelper; import net.sourcefo ...
- java中excel导入\导出工具类
1.导入工具 package com.linrain.jcs.test; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import ...
- java中定义一个CloneUtil 工具类
其实所有的java对象都可以具备克隆能力,只是因为在基础类Object中被设定成了一个保留方法(protected),要想真正拥有克隆的能力, 就需要实现Cloneable接口,重写clone方法.通 ...
- java代码行数统计工具类
package com.syl.demo.test; import java.io.*; /** * java代码行数统计工具类 * Created by 孙义朗 on 2017/11/17 0017 ...
- Java加载Properties配置文件工具类
Java加载Properties配置文件工具类 import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; ...
随机推荐
- C++17 Filesystem 实用教程
点击查看代码 C++17 标准带来了 std::filesystem库, 提供了强大的工具来处理文件路径, 目录以及其他与文件系统相关的操作. 这篇文章适合 C++ 初学者以及希望掌握 C++17 新 ...
- DBeaver 连接 mysql 报错:Public Key Retrieval is not allowed
前言 DBeaver 连接 mysql 报错:Public Key Retrieval is not allowed 遇到 "Public Key Retrieval is not allo ...
- linux xxx is not in the sudoers file. This incident will be reported.
前言 linux 报错:xxx is not in the sudoers file. This incident will be reported. 这意味着用户 xxx 没有在 sudoers 文 ...
- python 更新pip镜像源
前言 默认情况下 pip 使用的是国外的镜像,在下载的时候速度非常慢,下载速度是几kb或者几十kb,花费的时间比较长. 解决办法 国内目前有些机构或者公司整理了对应的镜像源,使得通过内网就能访问即可, ...
- 编写你的第一个 Django 应用程序,第7部分
本教程从教程 6 停止的地方开始.我们将继续使用网络投票应用程序,并将专注于自定义 Django 自动生成的管理站点,这是我们在教程 2 中首次探索的. 一.自定义管理表单 通过用 admin.sit ...
- VTK-8.2.0源码编译和初步使用(Cmake+VS2015+Qt5.14.2)
一.准备数据 1.首先确保已安装VS5015和Qt5.14.2 2.下载Cmake并安装:Download CMake 3.下载VTK-8.2.0源码和数据并解压:Download | VTK 二.C ...
- datasnap的Restful的接口方法
//Restful接口测试 //GET function Test(Value: string): string; //POST function updateTest(Value: string; ...
- 关于er图的几个工具
建立数据库包括其他的er图,这个太重要了.因为这关于效率和清晰思路. 但是目前感觉好用的还是ER/Studio.如果不差银子还是建议用这一款.真的好方便. 1.正向逆向工程非常顺利和快捷. 2.物理模 ...
- 基于AST实现国际化文本提取
我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:霜序 前言 在阅读本文之前,需要读者有一些 babel 的 ...
- git版本管理库运用
一.git 删除本地创建的仓库连接 //删除文件夹下的所有 .git 文件 find . -name ".git" | xargs rm -Rf 二.git命令:全局设置用户名邮箱 ...