Java——获取图片尺寸和大小

来源:互联网 发布:杭州龙翔桥到淘宝城 编辑:程序博客网 时间:2024/06/04 00:39

包括获取本地图片和远程服务器上的图片的尺寸和大小,这里分别使用 BufferedImage 和 ImageReader 来获取图片信息,ImageReader 是通过从图片源信息中获取图片信息,所以速度会更快。

获取本地图片信息

BufferedImage

public static Map<String, Object> getImageInfo(String filePath) {        long startTime = System.currentTimeMillis();        Map<String, Object> imageInfoMap = new HashMap<>();        InputStream is = null;        try {            File file = new File(filePath);            is = new FileInputStream(file);            BufferedImage image = ImageIO.read(is);            imageInfoMap.put(IMAGE_SIZE, file.length());            imageInfoMap.put(IMAGE_WIDTH, image.getWidth());            imageInfoMap.put(IMAGE_HEIGHT, image.getHeight());        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        } finally {            if (is != null) {                try {                    is.close(); // 关闭流                } catch (IOException e) {                    logger.error("getImageInfo I/O exception " + e.getMessage(), e);                }            }        }        long endTime = System.currentTimeMillis();        logger.info("take time: " + (endTime-startTime));        return imageInfoMap;    }

ImageReader

public static void getImageInfoByImageReader(String filePath) {        long beginTime = new Date().getTime();        File file = new File(filePath);        try {            ImageReader reader = 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();        logger.info("使用[ImageReader]获取图片尺寸耗时:[" + (endTime - beginTime) + "]ms");    }

通过URL获取图片信息

BufferedImage

public static void getImageInfoByUrl(String urlStr){        try{            URL url = new URL(urlStr);            URLConnection urlConnection = url.openConnection();            int length = urlConnection.getContentLength();            System.out.print("length: " + length);            if(length == -1){                System.out.print("image not exist");            }else{                BufferedImage sourceImg = ImageIO.read(url);                System.out.print("image width:" + sourceImg.getWidth());                System.out.print("image height:" + sourceImg.getHeight());            }        }catch (MalformedURLException e){            logger.info("url not right " + e.getMessage(), e);        }catch (IOException e){            logger.info("IOException " + e.getMessage(), e);        }    }

ImageReader

public static void getImageInfoByUrl(String urlStr){        try{            URL url = new URL(urlStr);            URLConnection urlConnection = url.openConnection();            int length = urlConnection.getContentLength();            System.out.print("length: " + length);            if(length == -1){                System.out.print("image not exist");            }else{                try(ImageInputStream in = ImageIO.createImageInputStream(urlConnection.getInputStream())){                    final Iterator<ImageReader> readers = ImageIO.getImageReaders(in);                    if (readers.hasNext()) {                        ImageReader reader = readers.next();                        try {                            reader.setInput(in);                            System.out.print(reader.getWidth(0) + "," + reader.getHeight(0));                        } finally {                            reader.dispose();                        }                    }                }            }        }catch (MalformedURLException e){            logger.info("url not right " + e.getMessage(), e);        }catch (IOException e){            logger.info("IOException " + e.getMessage(), e);        }    }

参考资料

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

1 0
原创粉丝点击