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

包括获取本地图片和远程服务器上的图片的尺寸和大小,这里分别使用 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获取图片尺寸总结

以下是一个简单的Java获取图片实战案例。 首先,我们需要导入Java的图形处理库——Java AWT和Java Swing。然后,我们需要创建一个窗口,并在窗口中显示一张图片。 代码如下: ```java import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.*; public class ImageExample extends JFrame { public ImageExample() throws IOException { super("Image Example"); BufferedImage image = ImageIO.read(new File("example.jpg")); // 读取图片 JLabel label = new JLabel(new ImageIcon(image)); // 创建一个标签,并将图片设置为标签的图标 add(label); // 将标签添加到窗口中 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置窗口关闭时的操作 setSize(400, 400); // 设置窗口大小 setVisible(true); // 显示窗口 } public static void main(String[] args) throws IOException { new ImageExample(); // 创建窗口 } } ``` 在这个例子中,我们使用`ImageIO`类读取了一个名为`example.jpg`的图片,并将其转换为`BufferedImage`对象。然后,我们创建了一个`JLabel`,并将`BufferedImage`对象设置为`JLabel`的图标。最后,我们将`JLabel`添加到窗口中,并设置窗口的一些属性,如关闭时的操作、大小和可见性。 运行程序后,我们会看到一个窗口,其中包含了一张图片。 ![image example](https://camo.githubusercontent.com/33b5bc0c5f8b1c7b6d52e6e0d6b9e6f9c7bcdf2d/68747470733a2f2f696d616765732e64617461626173652e636f6d2f75706c6f6164732f746563686e6f6c6f67792f696d6167655f6578616d706c652e6a7067)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值