<?php
function getWebPSize($filename) {
$fp = fopen($filename, 'rb');
if (!$fp) {
return false;
}
$header = fread($fp, 30);
fclose($fp);
if (substr($header, 0, 4) !== "RIFF" || substr($header, 8, 4) !== "WEBP") {
return false;
}
$chunk_type = substr($header, 12, 4);
if ($chunk_type === "VP8 ") {
// Lossy WebP
$w = unpack("v", substr($header, 26, 2));
$h = unpack("v", substr($header, 28, 2));
$width = $w[1] & 0x3FFF;
$height = $h[1] & 0x3FFF;
return array($width, $height);
} elseif ($chunk_type === "VP8X") {
// Extended WebP
$w = unpack("C3", substr($header, 24, 3));
$h = unpack("C3", substr($header, 27, 3));
$width = ($w[1] | ($w[2] << 8) | ($w[3] << 16)) + 1;
$height = ($h[1] | ($h[2] << 8) | ($h[3] << 16)) + 1;
return array($width, $height);
}
return false;
}
// 예제 사용
$size = getWebPSize('example.webp');
if ($size !== false) {
echo 'Width: ' . $size[0] . ', Height: ' . $size[1];
} else {
echo 'WebP 이미지가 아니거나 읽기 실패.';
}
?>