Получить разрешение изображения (DPI) изображения (JPEG,PNG,SVG,GIF) без использования каких-либо расширений PHP

Я хочу получить разрешение изображения (DPI) изображения (JPEG,PNG,SVG,GIF) без использования каких-либо расширений PHP (например, imageMagick). Я искал везде, но я не мог найти идеальное решение. Я попробовал ниже код (получил по ссылке)

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.

1 ответ

DPI изображения обычно является фикцией. Редко это изображение, созданное там, где физические размеры окончательного рендеринга действительно имеют значение (для самого изображения). Тем не менее, информация о DPI хранится в данных EXIF ​​JPEG, поэтому вы можете прочитать их оттуда с помощью встроенной функции 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"] ?>
Другие вопросы по тегам