how to get the size of an image in java

2020-05-21 01:44发布

hi I am using Jtidy parser in java.


URL url = new URL("http://l1.yimg.com/t/frontpage/baba-ramdev-310511-60.jpg");  
Image image = new ImageIcon(url).getImage();
int imgWidth = image.getWidth(null);
int imgHeight = image.getHeight(null);

Above code is working fine,I am getting height & width properly.But I want to see the size of an image (for example whether it is in KB,or in MB ).Please help me,how to get the size of an image.Is there any method.

标签: java image url
4条回答
家丑人穷心不美
2楼-- · 2020-05-21 01:48

Use a HEAD request to get the content length

URL url = new URL("http://l1.yimg.com/t/frontpage/baba-ramdev-310511-60.jpg");
//Set the user agent
System.setProperty("http.agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0");
//Use Http to get the head request
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
//head request to minimal response
urlConnection.setRequestMethod("HEAD");
length = (urlConnection).getContentLengthLong();
查看更多
迷人小祖宗
3楼-- · 2020-05-21 01:49

How to count your bytes & eat them too.

import java.awt.Image;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.net.URL;
import java.io.*;

class ImageInfo {

    public static void main(String[] args) throws Exception {
        URL url = new URL(
            "http://l1.yimg.com/t/frontpage/baba-ramdev-310511-60.jpg");
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        InputStream is = url.openStream();
        byte[] b = new byte[2^16];
        int read = is.read(b);
        while (read>-1) {
            baos.write(b,0,read);
            read = is.read(b);
        }
        int countInBytes = baos.toByteArray().length;
        ByteArrayInputStream bais = new ByteArrayInputStream(
            baos.toByteArray());
        Image image = ImageIO.read(bais);
        int width = image.getWidth(null);
        int height = image.getHeight(null);
        String imageInfo =
            width + "x" + height + " px, " +
            countInBytes + " bytes.";
        JOptionPane.showMessageDialog(null,
            new JLabel(imageInfo, new ImageIcon(image), SwingConstants.CENTER));
    }
}

enter image description here

查看更多
Explosion°爆炸
4楼-- · 2020-05-21 02:03

Try:

url.openConnection().getContentLength();

If this doesn't work, you can load the stream using:

url.openStream()

...and read the stream until the end, counting how many bytes were actually read. You might also use CountingInputStream decorator to reuse the stream later. However the first code snippet seems to work.

查看更多
家丑人穷心不美
5楼-- · 2020-05-21 02:05

This is one of the simplest method to find the dimensions of image.

 URL url=new URL("Any web image url");
 BufferedImage image = ImageIO.read(url);
 int height = image.getHeight();
 int width = image.getWidth();
 System.out.println("Height : "+ height);
 System.out.println("Width : "+ width);
查看更多
登录 后发表回答