оразмеряване

slideR

Registered
Здравейте!
Понеже до сега не ми се е налагало да работя с изображения в php имам проблем!
И имам една папка tennis и в нея имам 5 изображения, та ми трабва скрипт, който през такав линк thumb.php?img=linka да оразмерява снимката примерно в размер 150 х 150 (без да я записва).
 
Закакво изобщо ти е скрипт? <img src='$img' width='еди колко' height='еди колко' /> ??
 
KaRo каза:
Закакво изобщо ти е скрипт? <img src='$img' width='еди колко' height='еди колко' /> ??

защото пробвай с някоя снимка 4096x3072 (12MPx) да видиш, за какво размазване ще стане на въпрос :)

П.п. -> Пробвам се тук да направя 1 скрипт, но нещо не ми се получава оразмеряването така както искам :) Ако го направя и работи коректно с всякакви размери ще пусна кода :)
 
Значи снимките ще са макс 1000px x 1000px. Ако работи с този размер го дай.
 
slideR каза:
Значи снимките ще са макс 1000px x 1000px. Ако работи с този размер го дай.

Пробвай това дали ще ти свърши работа :) работи и с високи резолюции тествано с 14MPx (4320x3240)

Код:
<?php
$max_width = 150;
$max_height = 150;

$upfile = $_GET['image'];
$type = getimagesize($upfile);

    Header("Content-type: ".$type['mime']."");
   
    $size = getimagesize($upfile); // Read the size
          $width = $size[0];
          $height = $size[1];
         
          $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;
          }
    
     ini_set('memory_limit', '1024M');
    
if($type['mime'] == "image/jpeg") {
    $src = imagecreatefromjpeg($upfile);
    $dst = imagecreatetruecolor($tn_width, $tn_height);
    imagecopyresized($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);
    imagejpeg($dst);
	ImageDestroy($src);
	ImageDestroy($dst);
}
elseif($type['mime'] == "image/png") {
    $src = imagecreatefrompng($upfile);
    $dst = imagecreatetruecolor($tn_width, $tn_height);
    imagecopyresized($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);
    imagepng($dst);
	ImageDestroy($src);
	ImageDestroy($dst);
}
elseif($type['mime'] == "image/gif") {
    $src = imagecreatefromgif($upfile);
    $dst = imagecreatetruecolor($tn_width, $tn_height);
    imagecopyresized($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);
    imagegif($dst);
	ImageDestroy($src);
	ImageDestroy($dst);
}
elseif($type['mime'] == "image/bmp") {
    $src = imagecreatefrombmp($upfile);
    $dst = imagecreatetruecolor($tn_width, $tn_height);
    imagecopyresized($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);
    imagebmp($dst);
	ImageDestroy($src);
	ImageDestroy($dst);
}
?>

гледах го в php.net, но го преработих да работи с jpg/jpeg, bmp, png и gif :) защото работеше само с jpg/jpeg :)

Ако файла го кръстиш thumb.php линковете ще са така -> thumb.php?image=image.png

Дано свърши работа :)
 

Back
Горе