2016-03-31 6 views
0

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

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 две разные звери. – apokryfos

+0

DPI изображения SVG бесконечен. –

ответ

1

DPI изображения обычно является предметом вымысла. Редко это изображение, созданное там, где фактические размеры финального рендеринга фактически имеют значение (насколько это касается самого изображения). Тем не менее, информация DPI хранится в EXIF ​​данных в формате JPEG, так что вы можете прочитать его оттуда с the built-in PHP function:

<?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"] ?> 
+0

Привет, Квентин, спасибо за ответ. Я проверил функцию, но я не получил информацию DPI. Это то, что я получил, когда пытался распечатать данные exif. Array ([FileName] => 1.jpg [FileDateTime] => 1350899542 [FileSize] => 150695 [FileType] => 2 [MimeType] => image/jpeg [SectionsFound] => IFD0, APP12 [COMPUTED] => Array ([html] => width = "700" height = "420" [Height] => 420 [Width] => 700 [IsColor] => 1 [ ByteOrderMotorola] => 0) [Company] => Ducky [Info] =>) – Arun

+0

@Arun - Тогда, насколько я могу судить, файл не указывает, какой размер он хочет напечатать. Как я уже сказал, DPI обычно вымышленный. Большинство людей хотят, чтобы размер изображения соответствовал документу или его размер соответствовал DPI/PPI принтера/дисплея, а не заботы о том, какой размер изображения считает, что он должен отображаться (и обычно человек, создающий изображение, думает, что тот же и DPI добавляется только по умолчанию графическим программным обеспечением). – Quentin

+0

Спасибо Квентин. Тогда я думаю, я должен использовать imagemagicks. – Arun