Динамичен thumbnail (JPEG, GIF, PNG)
Ето и по-разширена версия на скрипта. За сега не се поддържа анимиран gif, но се поддържа прозрачността в png и gif. А и за анимацията иска GD2 или ImageMagick 6... bmp за сега също не се поддържа, но и за него трябва специялна библиотека, ще продължавам да търся по-просто решение. Сега много се гордея с прозрачността. Smile

resize.php
<?php

$img = $_GET["img"];
$max = $_GET["max"];

function thumbnail($imgfile,$thumbsize) {

list($width,$height) = getimagesize($imgfile);

$imgratio = $width / $height;

if($imgratio > 1) {
$newwidth = $thumbsize;
$newheight = $thumbsize / $imgratio;
}
else if($imgratio < 1) {
$newheight = $thumbsize;
$newwidth = $thumbsize * $imgratio;
}
else {
$newheight = $thumbsize;
$newwidth = $thumbsize;
}

$thumb = imagecreatetruecolor($newwidth,$newheight);

if (eregi('.jpg', $imgfile) || eregi('.jpеg', $imgfile)) {
header('Content-type: image/jpeg');
$source = imagecreatefromjpeg($imgfile);
imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagejpeg($thumb, '', 100);
}
else if (eregi('.gif', $imgfile)) {
header('Content-type: image/gif');
$source = imagecreatefromgif($imgfile);

$transperent = imagecolortransparent($source);
if ($transparent >= 0) {
imagepalettecopy($source, $thumb);
imagefill($thumb, 0, 0, $transparent);
imagecolortransparent($thumb, $transparent);
imagetruecolortopalette($thumb, true, 256);
}

imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagegif($thumb,'',100);
}
else if (eregi('.png', $imgfile)) {
header('Content-type: image/png');
$source = imagecreatefrompng($imgfile);

imagealphablending($thumb, false);
$transperent = imagecolorallocatealpha($thumb, 0, 0, 0, 127);
imagefill($thumb, 0, 0, $transparent);
imagesavealpha($thumb, true);

imagecopyresampled($thumb,$source,0,0,0,0,$newwidth,$newheight,$width,$height);
imagepng($thumb,'',0);
}

imagedestroy($thumb);

}
thumbnail($img, $max);
?>

Такам. Тук съм го оптимизирал доста отколкото предишния. Сега за да оръзмерите картинката ще е нужно само от един img линк. Или по-точно:
<img src="resize.php?img=untitled.jpg&max=150">

untitled.jpg е името на изображението спрямо файла resize.php. Тоест ако изображението е в папката /images на сървъра линка ще стане така:
<img src="resize.php?img=images/untitled.jpg&max=150">

Ако изображението е на друг сървър ще стане така:
<img src="resize.php?img=http://web-tourist.net/new/images/fona.jpg&max=150">


max=150 е максималния размер на изображението.

Гарантирам за това, че скрипта ще ви оръзмери правилно изображенията, няма да има размазване и загуба на качество (освен ако изобр. не е gif и е по-голямо от 2000x2000 px, тогава ще се получи леко пренаслагване на пикселите(виж демото по-долу)).

ДЕМО (JPEG)
ДЕМО (GIF)
ДЕМО (PNG)
ДЕМО (BigGIF)

Урока е авторски, забранявам преписването му!





/ Трябва да сте регистриран за да напишете коментар /