Bir görüntü almak ve bir html sayfa yükleyin

3 Cevap php


I am working with php and ajax. I'm able to retrive an image from a database, but I would like to show the image in 100px x 100px size, but it just retrieves the original image size and spoiling the aligning work that I did.

Ben alınan görüntü için genişliğini ve yüksekliğini nasıl çözebilirsiniz. Ben veritabanından retriving için aşağıdaki kodu kullanmış

$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'];

3 Cevap

Bunlar, bu kod gerçekleştiren adımlar

  1. Kopya kaynak görüntü
  2. Görüntü boyutlarını hesaplar
  3. (Eğer maksimum yükseklik / genişlik belirtin) görüntüyü yeniden boyutlandırır
  4. Boy oranını muhafaza eder
  5. Writes destination image

This was created from a variety of code snippets I've found here at php.net and other places on the web.
I take no credit for any of this code other than putting the pieces together. 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);

?>

Bant genişliği bir sorun değilse, bir görüntü, sunucu için yoğun CPU yeniden boyutlandırma:

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

Resized zaman iyi görünüyor böylece Modern tarayıcılar görüntüyü filtreler.

O bunu, boy oranı ve kırpma tutmak istiyorum:

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

Ayrıca Pasta cevabını artı bir görüntü önbelleğini kullanarak düşünün. Orijinali kaybetmeden sadece bir kez her resmi yeniden boyutlandırmak için.