Thumbnail ,който да има промяна и на width и на hight

morkov4o

Registered
Здравейте хора ! Ползвам ето това скриптче на Soul:

Код:
<?php

$max_dimension = $_GET['wdth'];
$source_file = $_GET['from'];
if($_GET['from'])
{
   list($img_width,$img_height) = getimagesize($source_file); // Взимат се височината и ширината на картината
   $aspect_ratio = $img_width / $img_height;
 
   if ( ($img_width > $max_dimension) || ($img_height > $max_dimension) )
   {
       if ( $img_width > $img_height ) // За широки картини
       {
           $new_width = $max_dimension;
           $new_height = $new_width / $aspect_ratio;
       }
       elseif ( $img_width < $img_height ) // За високи картини
       {
           $new_height = $max_dimension;
           $new_width = $new_height * $aspect_ratio;
       }
       elseif ( $img_width == $img_height ) // За квадратни картини
       {
           $new_width = $max_dimension;
           $new_height = $max_dimension;
       }
       else { echo "Error reading image size."; return FALSE; }
   }
   else { $new_width = $img_width; $new_height = $img_height; } // Ако е по-малка, размера не се променя
 
   // Make sure these are integers.
   $new_width = intval($new_width);
   $new_height = intval($new_height);
 
   $thumbnail = imagecreatetruecolor($new_width,$new_height); // Създава се картинка в памета

   // Взимаме сорса на картинката
   if ( strpos($source_file,".gif") ) { $img_source = imagecreatefromgif($source_file); }
   if ( (strpos($source_file,".jpg")) || (strpos($source_file,".jpeg")) )
   { $img_source = imagecreatefromjpeg($source_file); }
   if ( strpos($source_file,".bmp") ) { $img_source = imagecreatefromwbmp($source_file); }
   if ( strpos($source_file,".png") ) { $img_source = imagecreatefrompng($source_file); }
 
   // Създаваме картинка. В примера е PMG
header("Content-type: image/jpeg"); 
Imagecopyresampled($thumbnail, $img_source, 0, 0, 0, 0, $new_width, $new_height,imagesx($img_source),imagesy($img_source));
imagePNG($thumbnail); 
   
   // След като сме създали всичко, можем да изчистим картинките.
   imagedestroy($img_source);
   imagedestroy($thumbnail);
}
?>

Как да го направя да сменя и височината ? Защото на мен не ми прави всички картинки еднакви обностно височина и широчина :cry:
 
Ами, то така е направено.
Да не може да се сменя едното, за да не се развалят размерите на картинката.
Пример:
Оригинал: 10x10
Ще стане: 5x5 (ще се запази качеството)

Ако обаче го направиш 5x10 ... ще стане гадно :roll:

Ако все пак искаш, ето този ред промени:
$new_height = intval($new_height);

Нека стане нещо от този род:
$new_height = "100";
 
ами не виж аз нищо не съм барал ... но като слагам картинки с различни размери ... те ми стават и те с различни размери ... смисъл смаляват се ,но не стават с еднакви една на друга размери и това мн ми пречи ...
 
morkov4o каза:
ами не виж аз нищо не съм барал ... но като слагам картинки с различни размери ... те ми стават и те с различни размери ... смисъл смаляват се ,но не стават с еднакви една на друга размери и това мн ми пречи ...

Нормално е. Обикновенно, при ресайзване на снимки, за да се запази отношението на височина/широчина, се ползва един коефициент, който е отношението между височината/широчината.
В твоя случай ето ти реда, който смята този коефициент:
$aspect_ratio = $img_width / $img_height;
След, като имаш този коефициент, след това оразмеряването става лесно. Ако искаш картинката да ти е широка 200 пиксела, ресайзваш по широчина на 200 пикесла, а височината я намираш като умножаваш тези 200 пиксела по коефициента. Така, както казах, по-горе се запазва отношението на страните.

Разбира се, за да се получат всички снимките с еднаква максимална височина или широчина, трябва да се прави проверка за "дългата страна" на снимката ;) ако не се сещаш за какво говоря, погледни тази галерия:
http://www.planinari.org/pic/123-Shipka2007/index.html
Вертикалните снимките (тази на хрампаметника) са по-високи от останалите.
 

Back
Горе