Java读取图片文件的宽度和高度

InputStream is = new FileInputStream(filename);//通过文件名称读取

InputStream is =new ByteArrayInputStream(byte[] a);//通过文件的字节数组读取


BufferedImage buff = ImageIO.read(is);
buff.getWidth(); //得到图片的宽度
buff.getHeight();  //得到图片的高度
is.close(); //关闭Stream

### Java获取图片属性的高度宽度Java 中,可以利用 `javax.imageio.ImageIO` `java.awt.image.BufferedImage` 类来读取图像并提取其高度宽度。以下是具体实现方法: 通过 `ImageIO.read()` 方法加载图片到内存中的 `BufferedImage` 对象后,可以直接调用该对象的 `getWidth()` `getHeight()` 方法分别获取图片宽度高度。 #### 实现代码如下: ```java import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class ImageProperties { public static void main(String[] args) { try { File file = new File("example.jpg"); // 替换为实际路径 BufferedImage image = ImageIO.read(file); int width = image.getWidth(); // 获取宽度 int height = image.getHeight(); // 获取高度 System.out.println("Width: " + width); System.out.println("Height: " + height); } catch (IOException e) { System.err.println("Error reading the image file."); e.printStackTrace(); } } } ``` 上述代码展示了如何使用标准库函数完成这一操作[^1]。需要注意的是,在处理文件时应捕获可能抛出的异常以确保程序稳定性。 另外,如果目标是解析特定格式(如 PNG 或 JPEG)的元数据而不加载整个图像,则可考虑采用更效的解决方案——即借助 `ImageInputStream` 结合 `IIOMetadata` 提供的功能访问底层标签信息而无需完全解码位图数据流[^2]。 #### 更效的方式:仅读取元数据 对于某些应用场景而言,仅仅为了得到尺寸就载入整张图片可能是资源浪费的行为;此时可以通过下面的方法只分析头部结构从而快速获得所需参数。 ```java import javax.imageio.*; import javax.imageio.metadata.IIOMetadata; import javax.imageio.stream.ImageInputStream; import java.io.File; import java.util.Iterator; public class MetadataExample { public static Dimension getImageSize(File f) throws IOException{ Iterator<ImageReader> iter = ImageIO.getImageReadersBySuffix("jpg"); while(iter.hasNext()) { ImageReader reader = iter.next(); try { ImageInputStream stream = new FileImageInputStream(f); reader.setInput(stream ); int w = reader.getWidth(reader.getMinIndex()); int h = reader.getHeight(reader.getMinIndex()); return new Dimension(w,h); } finally { reader.dispose(); } } throw new IllegalArgumentException("No readers found!"); } } ``` 此段落介绍了另一种不依赖于缓冲区映像类的技术路线[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值