通过查看十六进制文件,发现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函数详解