Java获取上传图片的尺寸

本文介绍了如何使用Java的ImageIO类从输入流中读取图片,并将其转换为BufferedImage对象。此外,还展示了如何通过BufferedImage对象获取图片的宽度和高度。

BufferedImage sourceImg = javax.imageio.ImageIO.read(is);
得到BufferedImage对象,其中的is是InputStream,用来接收图片数据的流。  
取图像宽:sourceImg.getWidth()  
取图像高:sourceImg.getHeight()

### Java获取图片宽度和高度的方法 #### 方法概述 在 Java 中,可以通过 `BufferedImage` 类来加载并读取图片的元数据,其中包括图片的宽度和高度。以下是具体实现方式: --- #### 实现代码示例 ##### 1. **通过 `ImageIO.read()` 加载图片** 使用 `javax.imageio.ImageIO` 的静态方法 `read(File input)` 或其他重载形式加载图片文件为 `BufferedImage` 对象。 ```java import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class ImageDimensionExample { public static void main(String[] args) { try { // 加载图片 File file = new File("example.jpg"); BufferedImage image = ImageIO.read(file); if (image != null) { // 确保图片成功加载 int width = image.getWidth(); // 获取宽度 int height = image.getHeight(); // 获取高度 System.out.println("Width: " + width); // 输出宽度 System.out.println("Height: " + height); // 输出高度 } else { System.out.println("Failed to load the image."); // 图片加载失败提示 } } catch (Exception e) { e.printStackTrace(); } } } ``` 上述代码展示了如何利用 `BufferedImage` 的 `getWidth()` 和 `getHeight()` 方法分别获取图片的宽度和高度[^1]。 --- ##### 2. **处理上传文件的情况** 对于 Web 应用场景中的文件上传功能,可能需要判断上传的内容是否为有效的图片文件。以下是一个基于 Spring MVC 的例子: ```java import org.springframework.web.multipart.MultipartFile; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; public class UploadedImageProcessor { public boolean isValidImage(MultipartFile multipartFile) { try { // 将 MultipartFile 转换为 InputStream 并尝试加载为 BufferedImage BufferedImage image = ImageIO.read(new ByteArrayInputStream(multipartFile.getBytes())); if (image == null) { return false; // 如果无法解析为图片,则返回 false } int width = image.getWidth(); // 获取宽度 int height = image.getHeight(); // 获取高度 System.out.println("Uploaded Image Width: " + width); System.out.println("Uploaded Image Height: " + height); return true; // 成功解析则返回 true } catch (Exception e) { e.printStackTrace(); return false; // 出现异常也视为无效图片 } } } ``` 这段代码演示了如何结合 `MultipartFile` 接口与 `ImageIO.read()` 方法验证上传文件的有效性,并提取其尺寸信息[^2]。 --- #### 注意事项 - 当 `ImageIO.read()` 返回 `null` 值时,表明输入流未能被识别为支持的图片格式,可能是由于文件损坏或根本就不是图片文件所致。 - 在实际开发中建议加入 MIME 类型校验作为辅助手段,但需要注意某些情况下前端可能会伪造内容类型(如将 `.doc` 文件伪装成 `.png`)。因此单纯依赖 `getContentType()` 可能不够可靠[^2]。 --- ### 总结 综上所述,在 Java 编程环境中无论是本地还是网络传输来的图像资源都可以借助于标准库提供的工具类轻松完成对其基本属性比如大小方面的查询工作。关键是合理运用这些API的同时也要考虑到可能出现的各种意外状况做好相应的错误捕捉机制设计。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值