Создание превьюшек

Discussion in 'PHP' started by sharoff, 6 Feb 2009.

  1. sharoff

    sharoff Member

    Joined:
    5 Aug 2007
    Messages:
    25
    Likes Received:
    6
    Reputations:
    0
    Ребят, доброе время суток.
    Если что - не ругайтесь, нет особо много времени пользоваться поиском.
    Нужен простенький скрипт загрузки картинок на сервер (желательно и с ПК и с URL), которые имеют рандомное название, с созданием превьюшек, которые масштабируются пропорционально по ширине (всмысле задается только ширина, высоту он сам подгоняет).

    Если кто может - выдерните из ДЛЕ, может кто-то для себя писал, скиньте пожалуйста.

    Заранее огромное спасибо!
     
  2. Zitt

    Zitt Elder - Старейшина

    Joined:
    7 May 2006
    Messages:
    736
    Likes Received:
    268
    Reputations:
    59
    4images
     
  3. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Вот старая функция пропорционального ресайза, когда-то давно писал.

    PHP:
    function resize($image, $type, $width=500, $height=400){
            
            if(
    $type == 'gif') $srcImage = ImageCreateFromGif($image);
            elseif(
    $type == 'jpeg') $srcImage = ImageCreateFromJpeg($image);
            elseif(
    $type == 'png') $srcImage = ImageCreateFromPng($image);
            elseif(
    $type == 'bmp') $srcImage = ImageCreateFromwBmp($image);
            else 
    $srcImage = false;        

            if(
    $srcImage){   
            
                
    $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);
                    
                    if(
    $type == 'gif') return ImageGif($resImage, $image);
                    elseif(
    $type == 'jpeg') return ImageJpeg($resImage, $image);
                    elseif(
    $type == 'png') return ImagePng($resImage, $image);
                    elseif(
    $type == 'bmp') return ImagewBmp($resImage, $image);
                    else return 
    false;
                    
                    
    ImageDestroy($srcImage);
                    
    ImageDestroy($resImage);
                }
            }
        }

    Ну а с загрузкой всё просто.
    Локально: cм. функции move_uploaded_file() или copy()
    А удалённо: file_get_contents() и сохраняешь через fopen() и fputs()