我想要一个库,它可以用最初的几个字节计算出图像的尺寸。不一定是完美的。我在找类似这个Nodejs库的东西。https://github.com/image-size/image-size
发布于 2018-01-04 11:41:40
一些图像文件格式,如GIF、BMP、JPEG和PNG都有头部,头几个字节中有详细的信息,如文件格式、图像宽度和高度以及分辨率(DPI)。一个可以利用它的库是LEADTOOLS (免责声明:我为其供应商工作)。
我尝试了4个不同的文件,完全截断文件,并只保留一小块在开始。以下Java代码适用于所有4个文件:
f = new File("D:/test/tst.jpg.hdr");
RasterCodecs codecs = new RasterCodecs();
ILeadStream stream = LeadStreamFactory.create(f.getAbsolutePath());
CodecsImageInfo imgInfo = codecs.getInformation(stream, false);
int w = imgInfo.getWidth();
int h = imgInfo.getHeight();库支持数十种文件格式(如果计算子类型的话,支持数百种),但并不是所有格式都包含在标题中的全部信息。对于GIF和JPEG,只有一KB的数据就足够了。对于BMP和PNG,它所需的字节不到300字节。
尽管图书馆并不是免费的,但是你可以从网站上下载一个完全工作时间有限的试用版,而且即使在评估期间,技术支持也是免费的。
发布于 2018-09-05 02:29:05
有一些ImageMagick绑定/实现/API可用于Java -
im4java - http://im4java.sourceforge.net/
jMagick - http://www.jmagick.org/jmagick-doc/
不过,这两人都是5+,但都不确定他们做得有多好,等等。
但是ImageMagick在命令行中很受欢迎,而且它在PHP中对我很有用。
发布于 2022-09-16 11:04:47
标准的Java ImageIO (随JDK一起提供)可以在不解码图像的情况下从图像头中找到图像尺寸。最常见的格式不需要额外的依赖项。
try (ImageInputStream stream = ImageIO.createImageInputStream(input)) {
ImageReader reader = ImageIO.getImageReaders(stream).next(); // TODO: Handle unsupported format
reader.setInput(stream);
int width = reader.getWidth(0);
int height = reader.getHeight(0);
// ...
reader.dispose();
}Java ImageIO标准支持BMP、GIF、JPEG、PNG和TIFF (来自Java 9)。第三方插件存在于大多数流行的图像格式中。
https://softwarerecs.stackexchange.com/questions/47714
复制相似问题