2009-10-05 7 views
0

Je travaille avec php et ajax. Je suis en mesure de récupérer une image à partir d'une base de données, mais je voudrais montrer l'image en taille 100px x 100px, mais il récupère juste la taille de l'image originale et gâcher le travail d'alignement que j'ai fait.Récupérer une image et la charger dans une page html

Comment puis-je corriger la largeur et la hauteur d'une image récupérée. Je l'ai utilisé le code suivant pour la base de données retriving

$query = "select bin_data from imageupload where Id=1;"; 
$result = mysql_query($query, $con); 
$result_data = mysql_fetch_array($result, MYSQL_ASSOC); 
header("Content-type: image/jpeg") ; 
echo $result_data['bin_data']; 
+0

En retrivant de la base de données elle-même, je voudrais redimensionner l'image en fonction de l'exigence – praveenjayapal

Répondre

0

Vous pouvez utiliser le module gd de PHP pour le faire. Voir la fonction imagecopyresampled et les exemples dans sa documentation.

Notez qu'il s'agit d'une opération coûteuse. Vous devez donc enregistrer une image redimensionnée lorsqu'elle est téléchargée ou mettre en cache le résultat.

1

Ce sont les étapes de ce code effectue

  1. Copies images sources
  2. dimensions de l'image Calcule
  3. redimensionne l'image (spécifiée hauteur/largeur max)
  4. Conserve rapport d'aspect
  5. Ecrit destination image

Cela a été créé à partir d'une variété d'extraits de code J'ai trouvé ici à php.net et d'autres endroits sur le web.
Je ne prends aucun crédit pour tout ce code autre que en assemblant les pièces. http://www.php.net/manual/en/function.getimagesize.php

<?php 

$source_pic = 'images/source.jpg'; 
$destination_pic = 'images/destination.jpg'; 
$max_width = 500; 
$max_height = 500; 

$src = imagecreatefromjpeg($source_pic); 
list($width,$height)=getimagesize($source_pic); 

$x_ratio = $max_width/$width; 
$y_ratio = $max_height/$height; 

if(($width <= $max_width) && ($height <= $max_height)){ 
    $tn_width = $width; 
    $tn_height = $height; 
    }elseif (($x_ratio * $height) < $max_height){ 
     $tn_height = ceil($x_ratio * $height); 
     $tn_width = $max_width; 
    }else{ 
     $tn_width = ceil($y_ratio * $width); 
     $tn_height = $max_height; 
} 

$tmp=imagecreatetruecolor($tn_width,$tn_height); 
imagecopyresampled($tmp,$src,0,0,0,0,$tn_width, $tn_height,$width,$height); 

imagejpeg($tmp,$destination_pic,100); 
imagedestroy($src); 
imagedestroy($tmp); 

?> 
1

Redimensionner une image est d'UC pour le serveur, si la bande passante est un problème:

<img src="theimage.jpg" style="width:100px; height:100px;" /> 

navigateurs modernes filtre l'image il semble bien quand redimensionnée.

Il vous voulez conserver les proportions et cultures, faites ceci:

<div style="width:100px; height:100px; overflow:hidden; display:inline-block;"> 
    <img src="theimage.jpg" style="width:100px;" /> 
</div> 

Pensez également à utiliser la réponse de Pasta plus un cache d'image. Pour redimensionner une seule fois chaque image sans perdre l'original.

Questions connexes