积跬步,聚小流------java获取图片的尺寸

在一篇文章中获取到通过如下两种方式进行获取:

1、使用ImageReader进行获取;

2、使用BufferedImage进行获取;

并且经过验证ImageReader进行操作的耗时远远低于BufferedImage操作的耗时,详情可查看链接查看原文

然后根据应用我自己在项目中略做改动,在这里记录下:

<span style="font-size:14px;">package com.jzba.utils;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;

//获取图片的长宽尺寸
public class ImageUtil {

    /**
     * 源图片路径名称如:D:/zz/over.png
     */
    private String srcpath = "D:/zz/over.png";

    public ImageUtil() {

    }
    //进行本地验证
    public static void main(String[] args) throws Exception {
        ImageUtil util = new ImageUtil();
        util.getImageSizeByBufferedImage(util.getSrcpath());
    }
    //根据图片路径获取相应图片的尺寸
    public Map getSize(String srcPath){
    	ImageUtil util = new ImageUtil();
    	Map<String, Integer> map=util.getImageSizeByBufferedImage(util.getSrcpath());
    	return map;
    }

    /**
     * 使用ImageReader获取图片尺寸
     * 
     * @param src
     *            源图片路径
     */
    public void getImageSizeByImageReader(String src) {
        long beginTime = new Date().getTime();
        File file = new File(src);
        try {
            Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName("jpg");
            ImageReader reader = (ImageReader) readers.next();
            ImageInputStream iis = ImageIO.createImageInputStream(file);
            reader.setInput(iis, true);
//          System.out.println("width:" + reader.getWidth(0));
//          System.out.println("height:" + reader.getHeight(0));
        } catch (IOException e) {
            e.printStackTrace();
        }
        long endTime = new Date().getTime();
//      System.out.println("使用[ImageReader]获取图片尺寸耗时:[" + (endTime - beginTime)+"]ms");
    }

//    /**
//     * 使用BufferedImage获取图片尺寸
//     * 
//     * @param src
//     *            源图片路径
//     */
//    public void getImageSizeByBufferedImage(String src) {
//        long beginTime = new Date().getTime();
//        File file = new File(src);
//        FileInputStream is = null;
//        try {
//            is = new FileInputStream(file);
//        } catch (FileNotFoundException e2) {
//            e2.printStackTrace();
//        }
//        BufferedImage sourceImg = null;
//        try {
//            sourceImg = javax.imageio.ImageIO.read(is);
//            System.out.println("width:" + sourceImg.getWidth());
//            System.out.println("height:" + sourceImg.getHeight());
//        } catch (IOException e1) {
//            e1.printStackTrace();
//        }
//        long endTime = new Date().getTime();
//        System.out.println("使用[BufferedImage]获取图片尺寸耗时:[" + (endTime - beginTime)+"]ms");
//    }
    
    /**
     * 使用BufferedImage获取图片尺寸
     * @return Map<String,Integer> 返回map集合,包含长和宽
     * @param src
     *            源图片路径
     */
    public 	Map<String,Integer> getImageSizeByBufferedImage(String src) {
        File file = new File(src);
        FileInputStream is = null;
        Map<String,Integer> map=new HashMap<String, Integer>();
        try {
            is = new FileInputStream(file);
        } catch (FileNotFoundException e2) {
            e2.printStackTrace();
        }
        BufferedImage sourceImg = null;
        try {
            sourceImg = javax.imageio.ImageIO.read(is);
            map.put("width", sourceImg.getWidth());
            map.put("height", sourceImg.getHeight());
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        return map;
    }

    public String getSrcpath() {
        return srcpath;
    }

    public void setSrcpath(String srcpath) {
        this.srcpath = srcpath;
    }

}</span>
根据以上方法,如果在方法中加入相应的System.out.println();则可以获得一下结果:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值