Změna velikosti obrázků v PHP ~ Dashův web(log)

Dashův web(log)

Změna velikosti obrázků v PHP

31.01. 2011 napsal(a) Petr v kategorii programování, skriptování a správa

Obsah článku

Chcete svým návštěvníkům nabídnout náhledy obrázků a nechcete tak činit ručně ani nesmyslnými atributy v CSS? Potom tu pro Vás mám řešení.

<?php
/*

    +-----------------------------------------------------------------------+
    | Image_resize is free to use PHP script. You can support development   |
    | via PayPal or check updates on page http://blog.petrknap.cz/c197.html |
    +-----------------------------------------------------------------------+

/*-------------------------------------------------------------------------------------------------
About
    * updated:  2012-02-20
    * author:   Petr Knap
    * e-mail:   kontakt@petrknap.cz
    * homepage: http://petrknap.cz/

Inputs
    * src    - path to image
    * width  - new width in px
    * target - output (default null)
    If $target is not null the output is file defined in $target.
    REMEMBER to use readfile($target) after call image_join for
    send saved file to output.

Example
    <img src="img.php?file=desktop.jpg" alt="My desktop" />
    Where file img.php contains:
    <?php
        require_once('./image_resize.php');
        $e404 = './data/e404.png';
        if(!file_exists($_GET['file']))
        {
            header("Content-Type: image/png");
            readfile($e404);
        }
        else image_resize($_GET['file'], 400);
    ?>

Bugs & Errors
    The script has no known bugs.
    Have you found a bug? Report it via e-mail!
-------------------------------------------------------------------------------------------------*/
function image_resize($src$width$target null)
{
    
// image information
    
$i getimagesize($src);
    
$w $i[0];
    
$h $i[1];
    
$t $i[2];
    
// new size
    
if($width $w)
    {
        
$width  $w;
        
$height $h;
    }
    else
    {
        
$height round($width/$w*$h);
    }
//-------------------------------------------------------------------------------------------------
// new image
    
$new_image imagecreatetruecolor($width$height);
    
$background 0x00FFFFFF// white
    
imagefilledrectangle($new_image00$width$height$background);
    
// load $image
    
switch ( $t )
    {
        case 
1// GIF
            
$image imagecreatefromgif($src);
        break;
        case 
2// JPeG
            
$image imagecreatefromjpeg($src);
        break;
        default: 
// PNG
            
$image imagecreatefrompng($src);
        break;
    }
    
// resize & copy $image to $new_image
    
imagecopyresampled($new_image$image0000$width$height$w$h);
//-------------------------------------------------------------------------------------------------
// output
    
if($target == null)
        
header("Content-Type: image/jpeg");
    
// quality is set at 95%, can be changed
    
imagejpeg($new_image$target95);
    
// free memory
    
imagedestroy($new_image);
    
imagedestroy($image);
}
//-------------------------------------------------------------------------------------------------
?>

Samozřejmě lze tento skript kombinovat s vložením vodoznaku. Opět chyby ihned hlaste, finanční dary dle libosti zasílejte a skript úžívejte dle uvážení. Poslední verzi skriptu naleznete vždy v tomto článku.

Wolfram Research: Mathematica, Technical and Scientific Software