/**
* @param sourceFilePath
* @param targetFilePath
* @param width 目标宽
* @param height 目标高
* @param per 百分比
*/
private static void thumb(String sourceFilePath, String targetFilePath, int width, int height,
float per) throws Exception {
Image src;
try {
src = javax.imageio.ImageIO.read(new File(sourceFilePath)); //构造Image对象
//得到源图宽,高
int oldWidth = src.getWidth(null);
int oldHeight = src.getHeight(null);
int newWidth = 0;
int newHeight = 0;
double tmpWidth = (oldWidth * 1.00) / (width * 1.00);
double tmpHeight = (oldHeight * 1.00) / (height * 1.00);
// 如果图片目标尺寸与原图相同或者目标尺寸不是正方形则不留白处理
if (oldWidth != width && oldHeight != height) {
//图片跟据长宽留白,成一个正方形图。
BufferedImage oldpic;
if (oldWidth > oldHeight) {
oldpic = new BufferedImage(oldWidth, oldWidth, BufferedImage.TYPE_INT_RGB);
} else if (oldWidth < oldHeight) {
oldpic = new BufferedImage(oldHeight, oldHeight, BufferedImage.TYPE_INT_RGB);
} else {
oldpic = new BufferedImage(oldWidth, oldHeight, BufferedImage.TYPE_INT_RGB);
}
Graphics2D g = oldpic.createGraphics();
g.setColor(Color.white);
if (oldWidth > oldHeight) {
g.fillRect(0, 0, oldWidth, oldWidth);
g.drawImage(src, 0, (oldWidth - oldHeight) / 2, oldWidth, oldHeight,
Color.white, null);
} else if (oldWidth < oldHeight) {
g.fillRect(0, 0, oldHeight, oldHeight);
g.drawImage(src, (oldHeight - oldWidth) / 2, 0, oldWidth, oldHeight,
Color.white, null);
} else {
g.drawImage(src.getScaledInstance(oldWidth, oldHeight, Image.SCALE_SMOOTH), 0,
0, null);
}
g.dispose();
src = oldpic;
}
//图片调整为方形结束
//计算新图宽,高
if (oldWidth > width) {
newWidth = (int) Math.round(oldWidth / tmpWidth);
} else if (oldWidth < width) {
newWidth = (int) Math.round(oldWidth / tmpWidth);
} else {
newWidth = oldWidth;
}
if (oldHeight > height) {
newHeight = (int) Math.round(oldHeight / tmpHeight);
} else if (oldHeight < height) {
newHeight = (int) Math.round(oldHeight / tmpHeight);
} else {
newHeight = oldHeight;
}
BufferedImage tag = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB);
//绘制缩小后的图
//tag.getGraphics().drawImage(src,0,0,new_w,new_h,null);
tag.getGraphics().drawImage(
src.getScaledInstance(newWidth, newHeight, Image.SCALE_SMOOTH), 0, 0, null);
//输出文件流
FileOutputStream outPutStream = new FileOutputStream(targetFilePath);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(outPutStream);
JPEGEncodeParam jep = JPEGCodec.getDefaultJPEGEncodeParam(tag);
/* 压缩质量 */
jep.setQuality(per, true);
encoder.encode(tag, jep);
//近JPEG编码
//encoder.encode(tag);
outPutStream.flush();
outPutStream.close();
} catch (IOException e) {
logger.error("生成缩略图异常 [sourceFilePath = " + sourceFilePath + ", targetFilePath = "
+ targetFilePath + ", width = " + width + ", height = " + height
+ ", per = " + per + "]", e);
throw e;
}
}
分享到:
相关推荐
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
金融支付:浅析如何用定期资产设计活期产品.docx
Excel模板个人简历文艺清新单页06.docx
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
吹瓶转线清线(清场)记录表.xls
支持win10,win11(21H2及以前版本)系统
Modbus Slave version 9.3.2 Build 2156, modbus 协议从机,非常好用,包括32位与64位
Excel模板个人简历稳重大气单页03.docx
11记录控制程序.doc
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
第一步安装.zip
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
C风险心理承受能力测试20210603.docx
HPLC实验报告.docx
Screenshot_20240517_181056.jpg