获取WebP格式图片的长宽

通过查看十六进制文件,发现WebP格式图片的长宽信息位于文件头第26、27(高),28、29(宽)这四个字节中。

Java代码:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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());      
         }
     }
}

Java代码参考:Java图像处理实例

PHP代码

01
02
03
04
05
06
07
08
09
10
11
12
13
<?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函数详解

猜你喜欢

转载自ohjie.iteye.com/blog/2310400
今日推荐