【工具类】——图片缩放

embedded/2024/9/24 22:09:14/

java中对于图片的处理一般都是使用Graphics2D类来实现。
Graphics2D 是 Java 2D API 的核心类,用于在 Java 平台上渲染二维形状、文本和图像。它是 Graphics 类的扩展,提供了更复杂的图形操作功能,包括几何变换、颜色管理、文本布局等。
用来实现图片的指定尺寸缩放
工具类代码
public class ImageResizer {

public static byte[] imageResizer(byte[] imageBytes, int width, int height) {try {ByteArrayInputStream bais = new ByteArrayInputStream(imageBytes);BufferedImage originalImage = ImageIO.read(bais);// 创建缩放后的图像BufferedImage resizedImage = new BufferedImage(width, height, originalImage.getType());Graphics2D graphics = resizedImage.createGraphics();// 改善图像质量graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);// 设置透明度,保持原始图像的透明度graphics.setComposite(AlphaComposite.Src);// 绘制图像graphics.drawImage(originalImage, 0, 0, width, height, null);graphics.dispose();ByteArrayOutputStream baos = new ByteArrayOutputStream();ImageIO.write(resizedImage, "png", baos);return baos.toByteArray();} catch (Exception e) {return null;}
}

}

测试类

public static void main(String[] args) {// 指定原始图像文件路径和目标尺寸String inputImagePath = "/Users/qweasdzxc/Downloads/test0.jpeg"; // 替换为实际路径int targetWidth = 100; // 目标宽度int targetHeight = 100; // 目标高度// 读取原始图像文件try {File inputFile = new File(inputImagePath);BufferedImage originalImage = ImageIO.read(inputFile);// 将原始图像转换为字节数组ByteArrayOutputStream baos = new ByteArrayOutputStream();ImageIO.write(originalImage, "png", baos);byte[] imageBytes = baos.toByteArray();// 调整图像大小byte[] resizedImageBytes = imageResizer(imageBytes, targetWidth, targetHeight);// 将调整大小后的图像保存到新文件if (resizedImageBytes != null) {ByteArrayInputStream bais = new ByteArrayInputStream(resizedImageBytes);BufferedImage resizedImage = ImageIO.read(bais);ImageIO.write(resizedImage, "png", new File("/Users/qweasdzxc/Downloads/test1.jpeg")); // 替换为实际路径System.out.println("Image resized successfully.");} else {System.out.println("Failed to resize image.");}} catch (IOException e) {e.printStackTrace();}
}

http://www.ppmy.cn/embedded/116290.html

相关文章

DAY20信息打点-红蓝队自动化项目资产侦察武器库部署企查产权网络空间

2.自动化-网络空间-AsamF 1.去GitHub上下载项目之后使用CMD打开 2.输入命令AsamF_windows_amd64.exe -v生成配置文件 3.AsamF会在~/.config/asamf/目录下生成config.json文件 C:\Users\Acer\.config\asamf 5.根据文档输入命令去查询所需信息(已经没有用了&#x…

【LLM学习之路】9月23日24日 第十、十一天 Attention代码解读

【LLM学习之路】9月23日24日 第十、十一天 Attention代码解读 Transformer模型大致分为三类 纯 Encoder 模型(例如 BERT),又称自编码 (auto-encoding) Transformer 模型;纯 Decoder 模型(例如 GPT)&#…

免费与付费代理IP工具的优缺点分析

面对市场上众多的代理IP工具,选择合适的工具成为一项挑战。本文将深入分析免费与付费代理IP工具的优缺点,协助您做出明智的选择。 一、免费代理IP工具的优缺点 优点: 零成本:最大的优点在于无需任何费用。对于预算有限的用户&a…

SpringBoot 入门实践

Spring Boot 入门教程:从零开始构建你的第一个应用 Spring Boot 是基于 Spring 框架的开发框架,它旨在简化 Spring 应用的开发流程。通过 Spring Boot,你可以迅速构建基于 Spring 的独立应用,无需进行复杂的 XML 配置。本文将带你…

吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)2.3-2.4

目录 第四门课 卷积神经网络(Convolutional Neural Networks)第二周 深度卷积网络:实例探究(Deep convolutional models: case studies)2.3 残差网络(ResNets)(Residual Networks (ResNets))2.4 残差网络为什么有用&am…

Ubuntu 录制 gif 动画软件 Peek

安装命令 sudo add-apt-repository ppa:peek-developers/stable sudo apt update sudo apt install peek -y快捷键 CtrlAltR 进行 Gif的录制的开始与停止

ai论文生成可靠吗吗?分享4款ai论文生成软件

AI论文生成工具近年来在学术界和学生群体中越来越受欢迎,其主要优势在于能够提高写作效率、快速生成初稿,并提供多种功能以优化内容。然而,关于这些工具的可靠性问题,仍需从多个角度进行探讨。 AI论文生成的可靠性 AI论文生成的可…

js 实现换肤

js换肤 可以通过js来实现网页换肤效果的两种方案,很简单。 展示~ 简单换肤: 普通的CSS样式更换即可实现 方案1:js动态的link对应的皮肤样式 过编译工具与构建工具编译出多套皮肤css,通过js动态的link对应的皮肤样式 // js动态处理 var t…