java实现gif图片剪裁
写点笔记
共 2677字,需浏览 6分钟
· 2021-06-28
<dependency>
<groupId>javax.media</groupId>
<artifactId>jai-core</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>com.sun.media</groupId>
<artifactId>jai-codec</artifactId>
<version>1.1.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.10.0</version>
</dependency>
在功能实现之后,作者将自己的修改新建了一个包。如图:
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
try {
// 起始坐标,剪切大小
int x = 0;
int y = 0;
int width = 100;
int height = 100;
// 参考图像大小
int clientWidth = 300;
int clientHeight = 250;
File file = new File("C:\\Users\\tianjingle\\Desktop\\0.gif");
BufferedImage image = ImageIO.read(file);
double destWidth = image.getWidth();
double destHeight = image.getHeight();
if(destWidth < width || destHeight < height) {
throw new Exception("源图大小小于截取图片大小!");
}
double widthRatio = destWidth / clientWidth;
double heightRatio = destHeight / clientHeight;
x = Double.valueOf(x * widthRatio).intValue();
y = Double.valueOf(y * heightRatio).intValue();
width = Double.valueOf(width * widthRatio).intValue();
height = Double.valueOf(height * heightRatio).intValue();
System.out.println("裁剪大小 x:" + x + ",y:" + y + ",width:" + width + ",height:" + height);
float ratio = ((float) image.getWidth()) / image.getWidth();
String formatName = "gif";
String pathSuffix = "." + formatName;
String pathPrefix = "C:\\Users\\tianjingle\\Desktop\\";
String targetPath = pathPrefix + System.currentTimeMillis() + pathSuffix;
byte[] target = ImageUtils.cutImage(new FileInputStream(file.getPath()), "gif", x , y , width, height,ratio);
FileUtils.writeByteArrayToFile(new File(targetPath),target);
} catch (IOException e) {
e.printStackTrace();
}
}
早~
评论
豆瓣9.7,这部Java神作第3版重磅上市!
文末赠书Java 程序员们开年就有重磅好消息,《Effective Java 中文版(原书第 3 版)》要上市啦!该书的第1版出版于 2001 年,当时就在业界流传开来,受到广泛赞誉。时至今日,已热销近20年,本书第 3 版已是 Java 程序员的必读神书,被誉为“Java 四大名著之一”,甚至连
编码之外
0
15种时间序列预测方法总结(包含多种方法代码实现)
向AI转型的程序员都关注了这个号👇👇👇在这篇文章中,我们将深入探讨时间序列预测的基本概念和方法。我们将首先介绍单元预测和多元预测的概念,然后详细介绍各种深度学习和传统机器学习方法如何应用于时间序列预测,包括循环神经网络(RNN)、一维卷积神经网络(1D-CNN)、Transformer、自回归模型(
机器学习AI算法工程
0
SpringBoot 实现图片防盗链功能
程序员的成长之路互联网/程序员/技术/资料共享 关注阅读本文大概需要 4 分钟。来自:blog.csdn.net/weixin_46157208/article/details/138051737前言出于安全考虑,我们需要后端返回的图片只允许在某个网站内展示,不想被爬虫拿到图片地
程序员的成长之路
0
大量 Java 开源项目停更...
点击关注公众号,Java 干货及时推送↓推荐阅读:投了 100 多份简历后…出品 | OSC开源社区(ID:oschina2013)Sonatype 发布了最新的一份《软件供应链状况》报告,深入探讨了如何在充满选择的世界中定义更好的软件,并探讨人工智能 (AI) 对软件开发的深远
Java技术栈
0
一站式解决方案:基于 Arthas 实现服务发现和权限控制
来源:juejin.cn/post/7281849496983994383👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接
小哈学Java
0
Java 神作,必读!
Java 程序员们开年就有重磅好消息,《Effective Java 中文版(原书第 3 版)》要上市啦!该书的第1版出版于 2001 年,当时就在业界流传开来,受到广泛赞誉。时至今日,已热销近20年,本书第 3 版已是 Java 程序员的必读神书,被誉为“Java 四大名著之一”,甚至连 Java
小哈学Java
0
用 Shader 实现旗帜飘扬动画效果
我觉得对于刚入门 3D 编程的朋友来说,如果能够完成代码创建模型数据->创建材质->编写Shader动画这一系列,想必会有满满的成就感。今天就用 Cocos Creator 的 utils.MeshUtils.createMesh 接口,带大家感受一下这个流程。这个流程不仅可以用于新手学
COCOS
2
Java与lua互相调用简单教程
来源:网络👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接:http://116.62.199.48/ ,新项目
小哈学Java
0