java image 类型图片等比例缩小宽高代码

时间: 2023-03-16 15:44:07 浏览: 108
答:可以使用java的Graphics2D类来缩放图片,代码示例如下: //load image BufferedImage originalImage = ImageIO.read(new File("d:\\image\\mypic.jpg")); //get width and height int width = originalImage.getWidth(); int height = originalImage.getHeight(); //scale width and height width = width * scale; height = height * scale; //create new image object BufferedImage resizedImage = new BufferedImage(width, height, originalImage.getType()); //create graphic object Graphics2D g = resizedImage.createGraphics(); //draw resized image g.drawImage(originalImage, 0, 0, width, height, null); g.dispose();
相关问题

java 按宽度等比例压缩图片

可以使用 Java 中的 ImageIO 和 BufferedImage 类来实现按宽度等比例压缩图片的功能。具体实现步骤如下: 1. 使用 ImageIO 类的 read 方法读取原始图片文件,并将其保存为 BufferedImage 对象。 2. 获取原始图片的宽度和高度。 3. 计算等比例缩小后的宽度和高度,其中宽度为指定的压缩宽度,高度按比例计算。 4. 创建一个新的 BufferedImage 对象,设置其宽度和高度为计算出来的缩小后的宽度和高度。 5. 使用 Graphics2D 类的 drawImage 方法将原始图片绘制到新的 BufferedImage 对象上,并按比例缩小。 6. 使用 ImageIO 类的 write 方法将新的 BufferedImage 对象保存为压缩后的图片文件。 下面是一个简单的 Java 代码示例: ```java import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class ImageCompressor { public static void compressImage(String srcFilePath, String destFilePath, int width) throws Exception { // 读取原始图片文件 BufferedImage srcImage = ImageIO.read(new File(srcFilePath)); // 获取原始图片的宽度和高度 int srcWidth = srcImage.getWidth(); int srcHeight = srcImage.getHeight(); // 计算等比例缩小后的宽度和高度 int destWidth = width; int destHeight = (int) (srcHeight * ((double) destWidth / srcWidth)); // 创建一个新的 BufferedImage 对象 BufferedImage destImage = new BufferedImage(destWidth, destHeight, BufferedImage.TYPE_INT_RGB); // 绘制原始图片到新的 BufferedImage 对象上,并按比例缩小 Graphics2D g = destImage.createGraphics(); g.drawImage(srcImage, 0, 0, destWidth, destHeight, null); g.dispose(); // 保存压缩后的图片文件 ImageIO.write(destImage, "jpg", new File(destFilePath)); } public static void main(String[] args) throws Exception { compressImage("original.jpg", "compressed.jpg", 800); } } ``` 上面的代码将原始图片文件 "original.jpg" 压缩成宽度为 800 像素的图片,并保存为 "compressed.jpg" 文件。

java 按宽度等比例压缩图片 返回图片流

如果你想要将按宽度等比例压缩后的图片以流的形式返回,可以稍微修改一下上面的代码。具体实现步骤如下: 1. 创建一个 ByteArrayOutputStream 对象,用于存储压缩后的图片数据。 2. 使用 ImageIO 类的 write 方法将新的 BufferedImage 对象输出到 ByteArrayOutputStream 对象中。 3. 使用 ByteArrayOutputStream 对象的 toByteArray 方法将压缩后的图片数据转换成字节数组。 4. 返回字节数组即可。 下面是修改后的 Java 代码示例: ```java import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import javax.imageio.ImageIO; public class ImageCompressor { public static byte[] compressImage(String srcFilePath, int width) throws Exception { // 读取原始图片文件 BufferedImage srcImage = ImageIO.read(new File(srcFilePath)); // 获取原始图片的宽度和高度 int srcWidth = srcImage.getWidth(); int srcHeight = srcImage.getHeight(); // 计算等比例缩小后的宽度和高度 int destWidth = width; int destHeight = (int) (srcHeight * ((double) destWidth / srcWidth)); // 创建一个新的 BufferedImage 对象 BufferedImage destImage = new BufferedImage(destWidth, destHeight, BufferedImage.TYPE_INT_RGB); // 绘制原始图片到新的 BufferedImage 对象上,并按比例缩小 Graphics2D g = destImage.createGraphics(); g.drawImage(srcImage, 0, 0, destWidth, destHeight, null); g.dispose(); // 将新的 BufferedImage 对象输出到 ByteArrayOutputStream 对象中 ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageIO.write(destImage, "jpg", baos); // 返回压缩后的图片数据 return baos.toByteArray(); } public static void main(String[] args) throws Exception { byte[] compressedImageData = compressImage("original.jpg", 800); // do something with the compressedImageData } } ``` 上面的代码将原始图片文件 "original.jpg" 压缩成宽度为 800 像素的图片,将压缩后的图片数据存储在字节数组 compressedImageData 中,并返回该字节数组。你可以根据实际需求对返回的字节数组进行处理。

相关推荐

最新推荐

recommend-type

【车牌识别】 GUI BP神经网络车牌识别(带语音播报)【含Matlab源码 668期】.zip

Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
recommend-type

【作业视频】六年级第1讲--计算专项训练(2022-10-28 22-51-53).mp4

【作业视频】六年级第1讲--计算专项训练(2022-10-28 22-51-53).mp4
recommend-type

3文件需求申请单.xls

3文件需求申请单.xls
recommend-type

【脑肿瘤检测】 GUI SOM脑肿瘤检测【含Matlab源码 2322期】.zip

【脑肿瘤检测】 GUI SOM脑肿瘤检测【含Matlab源码 2322期】
recommend-type

GOGO语言基础教程、实战案例和实战项目讲解

GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解GO语言基础教程、实战案例和实战项目讲解
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

云原生架构与soa架构区别?

云原生架构和SOA架构是两种不同的架构模式,主要有以下区别: 1. 设计理念不同: 云原生架构的设计理念是“设计为云”,注重应用程序的可移植性、可伸缩性、弹性和高可用性等特点。而SOA架构的设计理念是“面向服务”,注重实现业务逻辑的解耦和复用,提高系统的灵活性和可维护性。 2. 技术实现不同: 云原生架构的实现技术包括Docker、Kubernetes、Service Mesh等,注重容器化、自动化、微服务等技术。而SOA架构的实现技术包括Web Services、消息队列等,注重服务化、异步通信等技术。 3. 应用场景不同: 云原生架构适用于云计算环境下的应用场景,如容器化部署、微服务
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。