[英]get width and height of webp with java
当我将 WEBP 文件上传到 Controller 时,我想用 java 获取宽度和高度。 当我使用以下代码时,它返回 null:
Image image = ImageIO.read(uploadFile);
我在网上搜索发现webp-imageio.jar
可以使用,但它太复杂了。 有什么简单的方法可以实现吗?
是的, Webp Container Sepcs定义了当前使用的Webp 扩展文件格式图像在与类型、文件大小、是否有任何 alpha、是否有任何动画、高度和宽度等对应的起始几位中具有标题。
尽管文档似乎已经过时(它显示高度和宽度的值对应于索引 20 到 25,但我发现它位于 24 到 29 索引)。
public class JavaRes {
public static java.awt.Dimension extract(InputStream is) throws IOException {
byte[] data = is.readNBytes(30);
if (new String(Arrays.copyOfRange(data, 0, 4)).equals("RIFF") && data[15] == 'X') {
int width = 1 + get24bit(data, 24);
int height = 1 + get24bit(data, 27);
if ((long) width * height <= 4294967296L) return new Dimension(width, height);
}
return null;
}
private static int get24bit(byte[] data, int index) {
return data[index] & 0xFF | (data[index + 1] & 0xFF) << 8 | (data[index + 2] & 0xFF) << 16;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.