Zend - The PHP Company




Resizing

Add Code


Generic Image Resizer  

Type: code fragment
Added by: malalam
Entered: 20/06/2006
Last modified: 09/12/2005
Rating: - (fewer than 3 votes)
Views: 3499
This is a generic resizer code snippet. It allows you to resize web compliant images (jpeg, gif, png), and to keep or not proportions, on both height and width, only width, onlyheight, the greatest value, the smallest value...


<?php
function imageResize ($sFileNameFrom$sFileNameTo$KEEP_PROPORTIONS) {
    
$aProportions = array ('DO_NOT_KEEP_PROPORTIONS''KEEP_PROPORTIONS_ON_WIDTH''KEEP_PROPORTIONS_ON_HEIGHT''KEEP_PROPORTIONS_ON_BIGGEST''KEEP_PROPORTIONS_ON_SMALLEST');
    if (!
file_exists ($sFileNameFrom) || !is_array ($KEEP_PROPORTIONS) || empty ($KEEP_PROPORTIONS)) {
        return 
false;
    } else {
        
$aImg = @getimagesize ($sFileNameFrom);
        if (
false === $aImg) {
            return 
false;
        } else {
            
$aTypes = array (=> 'gif'=> 'jpeg'=> 'png');
            if (!
in_array ($aImg[2], array_keys ($aTypes))) {
                return 
false;
            } else {
                if (!
in_array ($KEEP_PROPORTIONS[0], $aProportions)) {
                    return 
false;
                }
                
$iCmpt count ($KEEP_PROPORTIONS);
                if (!empty (
$KEEP_PROPORTIONS) && is_array ($KEEP_PROPORTIONS) && ($iCmpt >= 2) && is_int ($KEEP_PROPORTIONS[1])) {
                    switch (
$KEEP_PROPORTIONS[0]) {
                        case 
'KEEP_PROPORTIONS_ON_WIDTH' :
                            
$width $KEEP_PROPORTIONS[1];
                            
$height round ($aImg[1] / (round ($aImg[0]/$KEEP_PROPORTIONS[1])));
                            break;
                        case 
'KEEP_PROPORTIONS_ON_HEIGHT' :
                            
$height $KEEP_PROPORTIONS[1];
                            
$width round ($aImg[0]/ (round ($aImg[1]/$KEEP_PROPORTIONS[1])));
                            break;
                        case 
'KEEP_PROPORTIONS_ON_BIGGEST' :
                            if (
$aImg[0] >= $aImg[1]) {
                                
$width $KEEP_PROPORTIONS[1];
                                
$height round ($aImg[1] / (round ($aImg[0]/$KEEP_PROPORTIONS[1])));
                            } else {
                                
$height $KEEP_PROPORTIONS[1];
                                
$width round ($aImg[0] / (round ($aImg[1]/$KEEP_PROPORTIONS[1])));
                            }
                            break;
                        case 
'KEEP_PROPORTIONS_ON_SMALLEST' :
                            if (
$aImg[0] <= $aImg[1]) {
                                
$width $KEEP_PROPORTIONS[1];
                                
$height round ($aImg[1] / (round ($aImg[0]/$KEEP_PROPORTIONS[1])));
                            } else {
                                
$height $KEEP_PROPORTIONS[1];
                                
$width round ($aImg[0] / (round ($aImg[1]/$KEEP_PROPORTIONS[1])));
                            }
                            break;
                        case 
'DO_NOT_KEEP_PROPORTIONS':
                            if (
$iCmpt !== || !is_int ($KEEP_PROPORTIONS[2])) {
                                return 
false;
                            }
                            
$width $KEEP_PROPORTIONS[1];
                            
$height $KEEP_PROPORTIONS[2];
                            break;
                    }
                }
                
$getImg create_function ('$sFileNameFrom''return @imagecreatefrom'.$aTypes[$aImg[2]].'($sFileNameFrom);');
                
$im $getImg ($sFileNameFrom);
                
$image_p imagecreatetruecolor($width$height);
                
imagecopyresampled($image_p$im0000$width$height$aImg[0], $aImg[1]);
                
$saveImg create_function ('$img, $sFileNameTo''return @image'.$aTypes[$aImg[2]].'($img, $sFileNameTo);');
                if (
$saveImg ($image_p$sFileNameTo)) {
                    return 
true;
                } else {
                    return 
false;
                }
            }
        }
    }
}
?>


Usage Example


<?php
imageResize 
('RPG_Tiles_02.png''thumb_RPG_Tiles_02.png', array ('DO_NOT_KEEP_PROPORTIONS'2525));
?>


Rate This Script





Search



This Category All Categories