how to get the size of an image in java
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);开发者_StackOverflow
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.
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);
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.
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));
}
}
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();
精彩评论