0

我想在不使用任何 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 的图像,但我得到了 (100,100)。而且此功能仅适用于 JPEG 文件格式。

4

1 回答 1

1

图像的 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"] ?>
于 2016-03-31T12:08:50.097 回答