在不使用任何PHP扩展的情况下检索图像(JPEG、PNG、SVG、GIF)的图像分辨率(DPI)



我想在不使用任何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"] ?>

最新更新