通过查看十六进制文件,发现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. […]