专栏首页Hongtenjava开发_比较使用ImageReader和BufferedImage获取图片尺寸总结

java开发_比较使用ImageReader和BufferedImage获取图片尺寸总结

多的不用说,先上代码,大家伙儿看看

 1 /**
 2  * 
 3  */
 4 package com.b510;
 5 
 6 import java.awt.image.BufferedImage;
 7 import java.io.File;
 8 import java.io.FileInputStream;
 9 import java.io.FileNotFoundException;
10 import java.io.IOException;
11 import java.util.Date;
12 import java.util.Iterator;
13 
14 import javax.imageio.ImageIO;
15 import javax.imageio.ImageReader;
16 import javax.imageio.stream.ImageInputStream;
17 
18 public class ImageUtil {
19 
20     /**
21      * 源图片路径名称如:c:/1.jpg
22      */
23     private String srcpath = "e:/pool.jpg";
24 
25     public ImageUtil() {
26 
27     }
28 
29     public static void main(String[] args) throws Exception {
30         ImageUtil util = new ImageUtil();
31         util.getImageSizeByImageReader(util.getSrcpath());
32         util.getImageSizeByBufferedImage(util.getSrcpath());
33     }
34 
35     /**
36      * 使用ImageReader获取图片尺寸
37      * 
38      * @param src
39      *            源图片路径
40      */
41     public void getImageSizeByImageReader(String src) {
42         long beginTime = new Date().getTime();
43         File file = new File(src);
44         try {
45             Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName("jpg");
46             ImageReader reader = (ImageReader) readers.next();
47             ImageInputStream iis = ImageIO.createImageInputStream(file);
48             reader.setInput(iis, true);
49             System.out.println("width:" + reader.getWidth(0));
50             System.out.println("height:" + reader.getHeight(0));
51         } catch (IOException e) {
52             e.printStackTrace();
53         }
54         long endTime = new Date().getTime();
55         System.out.println("使用[ImageReader]获取图片尺寸耗时:[" + (endTime - beginTime)+"]ms");
56     }
57 
58     /**
59      * 使用BufferedImage获取图片尺寸
60      * 
61      * @param src
62      *            源图片路径
63      */
64     public void getImageSizeByBufferedImage(String src) {
65         long beginTime = new Date().getTime();
66         File file = new File(src);
67         FileInputStream is = null;
68         try {
69             is = new FileInputStream(file);
70         } catch (FileNotFoundException e2) {
71             e2.printStackTrace();
72         }
73         BufferedImage sourceImg = null;
74         try {
75             sourceImg = javax.imageio.ImageIO.read(is);
76             System.out.println("width:" + sourceImg.getWidth());
77             System.out.println("height:" + sourceImg.getHeight());
78         } catch (IOException e1) {
79             e1.printStackTrace();
80         }
81         long endTime = new Date().getTime();
82         System.out.println("使用[BufferedImage]获取图片尺寸耗时:[" + (endTime - beginTime)+"]ms");
83     }
84 
85     public String getSrcpath() {
86         return srcpath;
87     }
88 
89     public void setSrcpath(String srcpath) {
90         this.srcpath = srcpath;
91     }
92 
93 }

运行结果:

大家可以很容易明白...应该选择哪个方法了吧...

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • java开发_系统托盘

    ========================================================================

    Hongten
  • java的poi技术读取和导入Excel

    http://www.cnblogs.com/hongten/gallery/image/111987.html

    Hongten
  • spring开发_AOP_代理模式

    http://www.cnblogs.com/hongten/gallery/image/112445.html

    Hongten
  • 判断监听系统网络状态

    麦克劳林
  • Java开发中的23种设计模式详解

    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

    用户5640963
  • PHP反射类export方法详细解析

    CrazyCodes
  • [ASP.NET Core 3框架揭秘]服务承载系统[5]: 承载服务启动流程[上篇]

    Host类型是对IHost接口的默认实现,它仅仅是定义在NuGet包“Microsoft.Extensions.Hosting”中的一个内部类型,由于我们在本节...

    蒋金楠
  • Jpa配置实体类创建时间更新时间自动赋值,@CreateDate,@LastModifiedDate

    操作数据库映射实体类时,通常需要记录createTime和updateTime,如果每个对象新增或修改去都去手工操作创建时间、更新时间,会显得比较繁琐。

    天涯泪小武
  • Java开发中的23种设计模式详解(转)

                                      ——可复用面向对象软件的基础

    肖哥哥
  • Java基础(二)面向对象(上)

    coders

扫码关注云+社区

领取腾讯云代金券