3

我正在做一个需要一些图像处理的项目。

Web客户端将提交jpg、png、gif tif格式的图片。服务器端需要找出图像的维度和大小。

我可以看到一些 Java 类通过处理图像文件来实现这一点。有什么方法/库可以用来避免将二进制文件保存到文件中并仍然获得维度?

非常感谢

4

4 回答 4

3

如果您需要知道图像的大小(以字节为单位),您可以简单地进行如下操作:

byte[] imgBytes = // get you image as byte array
int imgSize = imgBytes.length;

如果您还想知道图像的宽度和高度,可以这样做,例如:

BufferedImage img = ImageIO.read(new ByteArrayInputStream(imgBytes));

而不是使用getWidth()getHeight()方法。

于 2013-08-29T09:54:03.607 回答
3
File imageFile = new File("Pic.jpg");

double bytes = imageFile.length();

System.out.println("File Size: " + String.format("%.2f", bytes/1024) + "kb");

try{

    BufferedImage image = ImageIO.read(imageFile);
    System.out.println("Width: " + image.getWidth());
    System.out.println("Height: " + image.getHeight());

} catch (Exception ex){
    ex.printStackTrace();
}
于 2013-08-29T09:57:39.750 回答
2

如果您不会对图像进行任何进一步的操作,您可以尝试使用com.drewnoakes.metadata-extractor库。

此外ImageIO.read()可以知道有一些性能问题。

于 2017-05-03T13:11:25.867 回答
1

您可以基于 an 创建图像InputStream,然后您知道它的尺寸(@Marc,@GGrec 我假设“尺寸”是指“尺寸”),如下所示:

    BufferedImage image = ImageIO.read(in);
    int width = image.getWidth();
    int height = image.getHeight();
于 2013-08-29T09:35:59.483 回答