Показать сообщение отдельно

Функция ресайза изображения
  #80  
Старый 29.04.2007, 03:23
mR_LiNK[deface_0nl
Участник форума
Регистрация: 12.12.2006
Сообщений: 158
С нами: 10217736

Репутация: 114
По умолчанию Функция ресайза изображения

Функция ресайза изображения


На вход подаются путь к изменяемой картинке, новая ширина и высота.

PHP код:
function SetImgSize($img, $width, $height)
{
         
//получаем тип файла    
    
{
        case 
"jpg":
            
$srcImage = @ImageCreateFromJPEG($img);                
        break;
            
        case 
"gif": 
            
$srcImage = ImageCreateFromGIF($img);
        break; 

        case 
"png": 
            
$srcImage = ImageCreateFromPNG($img); 
        break;
        
        default:
            return -
1;
        break;
    }
                
    
$srcWidth  = ImageSX($srcImage); 
    
$srcHeight = ImageSY($srcImage); 
        
    if((
$width < $srcWidth) || ($height < $srcHeight))
    {
        
$ratioWidth  = $srcWidth/$width; 
        
$ratioHeight = $srcHeight/$height; 

        if(
$ratioWidth < $ratioHeight)
        { 
            
$destWidth  = $srcWidth/$ratioHeight; 
            
$destHeight = $height; 
        }
        else
        { 
            
$destWidth  = $width; 
            
$destHeight = $srcHeight/$ratioWidth;                         
        } 

        
$resImage = ImageCreateTrueColor($destWidth, $destHeight);
        
        
ImageCopyResampled($resImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight);    
            
        
unlink($img);
            
        
//определяем тип
        
{
            case 
"jpg":
                
ImageJPEG($resImage, $img, 100); 
            break;
                
            case 
"gif": 
                
ImageGIF($resImage, $img);                     
            break; 

            case 
"png": 
                
ImagePNG($resImage, $img);                     
            break;
        }
            
        
ImageDestroy($srcImage); 
        
ImageDestroy($resImage); 
    }
} 
 
Ответить с цитированием