通过查看十六进制文件,发现WebP格式图片的长宽信息位于文件头第26、27(高),28、29(宽)这四个字节中。
Java代码:
import java.io.File;
import java.io.FileInputStream;
/**
* @author 42
*/
public class WebpSize {
public static void main(String[] args) {
File 文件=new File("示例.webp");
try
{
FileInputStream 输入=new FileInputStream(文件);
byte[] 字节数组=new byte[30];
输入.read(字节数组);
if("WEBP".equals(new String(字节数组,8,4,"utf-8"))){//先判断图片格式为webp
int 宽 = (((int) 字节数组[27] & 0xff) << 8) | (int) 字节数组[26] & 0xff;
int 高 = (((int) 字节数组[29] & 0xff) << 8) | (int) 字节数组[28] & 0xff;
System.out.print("宽:"+宽+",高:"+高);
}else{
System.out.print("文件不是webp格式");
}
输入.close();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
}[/code]<span id="more-1167"></span>
<p>Java代码参考:<a href="http://wenku.baidu.com/view/804c95e49b89680203d825dd.html" target="_blank">Java图像处理实例</a></p>
<br />
<p>PHP代码</p>
[code language="php"]<?php
$文件 = "https://www.gstatic.com/webp/gallery/4.sm.webp";
$文件流 = fopen($文件, "rb");
$字节数组 = fread($文件流, 30);
fclose($文件流);
$数组 = unpack("C12格式/S9尺寸", $字节数组);
for($i=9;$i<=12;$i++)
{
$文件格式.=chr($数组['格式'.$i]);
}
if(0==strcmp ( 'WEBP' , $文件格式 ))
print_r("宽:".$数组[尺寸8]." 高:".$数组[尺寸9]);
?>
PHP代码参考:舞动智慧的PHP里的pack和unpack函数详解
本文更新於 2014/05/19。
在〈获取WebP格式图片的长宽〉中有 1 則留言
[…] 通用的Java和PHP代码参见:获取WebP格式图片的长宽。 This entry was posted in 网站 and tagged wordpress, 程序. Bookmark the permalink. […]