Как получить размер изображения в java

привет Я использую парсер Jtidy в 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);

Над кодом работает нормально, я получаю высоту и ширину правильно. Но я хочу видеть размер изображения (например, будь то в КБ или в МБ). Пожалуйста, помогите мне, как получить размер изображения. Есть ли какой-либо метод.

Ответ 1

Это один из самых простых способов найти размеры изображения.

 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);

Ответ 2

Try:

url.openConnection().getContentLength();

Если это не работает, вы можете загрузить поток, используя:

url.openStream()

... и прочитайте поток до конца, подсчитав, сколько байтов действительно было прочитано. Вы можете также использовать CountingInputStream decorator для повторного использования потока позже. Однако первый фрагмент кода работает.

Ответ 3

Как подсчитать ваши байты и съесть их тоже.

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

Ответ 4

Используйте запрос HEAD для получения длины содержимого

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();