2016-03-31 77 views
0

我想檢索圖像(JPEG,PNG,SVG,GIF)的圖像分辨率(DPI) PHP擴展(如imageMagick)。我到處搜索,但我找不到完美的解決方案。我想下面的代碼(從link GOT)在不使用任何PHP擴展的情況下檢索圖像(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文件格式。

+1

分辨率和DPI是兩個不同的野獸。 – apokryfos

+0

SVG圖像的DPI是無限的。 –

回答

1

圖像的DPI通常是虛構的問題。很少是在最終渲染的物理尺寸實際上很重要的情況下創建的圖像(就圖像本身而言)。這就是說,DPI信息存儲在JPEG的EXIF數據,所以你可以從那裏用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] => ByteOrderMotorola] => 0)[Company] => Ducky [Info] =>) – Arun

+0

@Arun - 然後,據我所知,文件沒有指定要打印的大小。正如我所說,無論如何,DPI通常都是虛構的。大多數人想要調整圖像的大小來適應文檔,或者調整大小以適應打印機/顯示器的DPI/PPI,而不是關心圖像認爲應該顯示在什麼尺寸(通常創建圖像的人認爲相同DPI僅作爲圖形軟件的默認設置添加)。 – Quentin

+0

謝謝昆汀。然後我想,我必須使用imagemagicks。 – Arun

相關問題