Webmaster общности: Predpriemach.com | SearchEngines.bg

    Динамичен thumbnail (JPEG, GIF, PNG)

    Автор: skatebord

    Ето и по-разширена версия на скрипта. За сега не се поддържа анимиран 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 и е по-голямо от 2000×2000 px, тогава ще се получи леко пренаслагване на пикселите).