2016-03-31 5 views
0

Je veux récupérer la résolution d'image (DPI) d'une image (JPEG, PNG, SVG, GIF) sans utiliser Extension PHP (comme imageMagick). J'ai cherché partout, mais je n'ai pas trouvé de solution parfaite. J'ai essayé ci-dessous le code (obtenu à partir link)Récupérer la résolution d'image (PPP) d'une image (JPEG, PNG, SVG, GIF) sans utiliser d'extension 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)); 
} 

Mais je ne reçois pas le bon DPI horizontal et vertical. Par exemple, j'ai utilisé une image avec 96dpi et 96dpi, mais j'ai (100,100). Et cette fonction est seulement pour les formats de fichiers JPEG.

+1

résolution et DPI sont deux bêtes différentes. – apokryfos

+0

Le DPI d'une image SVG est infini. –

Répondre

1

Le DPI d'une image est généralement une question de fiction. Rarement, une image est créée où les dimensions physiques du rendu final sont importantes (en ce qui concerne l'image elle-même). Cela dit, les informations DPI sont stockées dans les données EXIF ​​d'un JPEG afin que vous puissiez le lire à partir de là avec 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

Salut Quentin, merci pour la réponse. J'ai vérifié la fonction, mais je n'ai pas obtenu d'informations DPI. C'est ce que j'ai obtenu quand j'ai essayé d'imprimer les données exif Array ([FileName] => 1.jpg [FileDateTime] => 1350899542 [FileSize] => 150695 [FileType] => 2 [MimeType] => image/jpeg [SectionsFound] => IFD0, APP12 [COMPUTED] => Tableau ([html] => width = "700" height = "420" [Hauteur] => 420 [Largeur] => 700 [IsColor] => 1 [ ByteOrderMotorola] => 0) [Company] => Ducky [Info] =>) – Arun

+0

@Arun - Ensuite, autant que je sache, le fichier ne spécifie pas la taille à laquelle il veut être imprimé. Comme je l'ai dit, le DPI est habituellement fictif de toute façon. La plupart des gens veulent ajuster l'image au format du document ou la dimensionner en fonction du DPI/PPI de l'imprimante/de l'affichage plutôt que de se soucier de la taille de l'image (et généralement la personne qui crée l'image pense la même chose et DPI n'est ajouté que par défaut par le logiciel graphique). – Quentin

+0

Merci Quentin. Ensuite, je pense, je dois utiliser les imagemagicks. – Arun