java File上传图片获取图片宽度高度

本文介绍了一个简单的Java工具类,用于获取本地图片的高度和宽度。通过使用标准Java库中的类,如BufferedImage和ImageIO,该工具类能够读取图片文件并返回其尺寸信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package util;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
  
/**
 * 通过java获取图片的宽和高
 * @author sunlightcs
 * 2011-6-1
 * http://hi.juziku.com/sunlightcs/
 */
public class ImageTools {
      
    /**
     * 获取图片宽度
     * @param file  图片文件
     * @return 宽度
     */
    public static int getImgWidth(File file) {
        InputStream is = null;
        BufferedImage src = null;
        int ret = -1;
        try {
            is = new FileInputStream(file);
            src = javax.imageio.ImageIO.read(is);
            ret = src.getWidth(null); // 得到源图宽
            is.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return ret;
    }
      
      
    /**
     * 获取图片高度
     * @param file  图片文件
     * @return 高度
     */
    public static int getImgHeight(File file) {
        InputStream is = null;
        BufferedImage src = null;
        int ret = -1;
        try {
            is = new FileInputStream(file);
            src = javax.imageio.ImageIO.read(is);
            ret = src.getHeight(null); // 得到源图高
            is.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return ret;
    }
}
    


package util;

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Map;

import javax.imageio.ImageIO;

public class test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String imagePath="F:\\images\\1.jpg";
		
		//System.out.println("高"+ImagesUtil.GetPhotoHeight(imagePath));
		//System.out.println("宽"+ImagesUtil.GetPhotoWidth(imagePath));
		
		 String imageUrl="http://avatar.youkuaiyun.com/9/F/2/1_5iasp.jpg"; 
		 String url="F:/images/1.jpg";
		 /* Map<String,Integer> map=ImagesUtil.GetImageResolution(imageUrl);
		  if(map!=null){
			 
			  System.out.println(map.get("width"));
			  System.out.println(map.get("width"));
		  }else{
			  System.out.println("图片路径或者格式不正确");
		  }  */
		File file=new File(url);
		Integer i= ImageTools.getImgHeight(file);
		System.out.println(i);
	}
	
	 

}


### 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]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值