我想在不使用任何PHP扩展(如imageMagick)的情况下检索图像(JPEG、PNG、SVG、GIF)的图像分辨率(DPI)。我到处找,但找不到一个完美的解决方案。我尝试了以下代码(从链接获得)
function get_dpi($filename){
$a = fopen($filename,'r');
$string = fread($a,20);
fclose($a);
$data = bin2hex(substr($string,14,4));
$x = substr($data,0,4);
$y = substr($data,0,4);
return array(hexdec($x),hexdec($y));
}
但我没有得到正确的水平和垂直DPI。例如,我使用了一个96dpi和96dpi的图像,但我得到了(100100)。这个函数只适用于JPEG文件格式。
图像的DPI通常是虚构的。很少创建最终渲染的物理维度真正重要的图像(就图像本身而言)。也就是说,DPI信息存储在JPEG的EXIF数据中,因此您可以使用内置的PHP函数从中读取:
<?php
$filename = "/Users/quentin/Dropbox/Camera Uploads/2016-03-30 21.01.09.jpg";
$exif = exif_read_data($filename);
?>
DPI is <?php echo $exif["XResolution"] ?> by <?php echo $exif["YResolution"] ?>