1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

Ресайзинг фоток

Тема в разделе "Web Coding", создана пользователем griffon, 23 мар 2007.

Статус темы:
Закрыта.
Модераторы: latteo
  1. griffon

    griffon Создатель

    Регистр.:
    12 авг 2006
    Сообщения:
    29
    Симпатии:
    3
    Мужики есть у кого нибудь нормально работующая функция ресайза фоток?
    Моя глючит по страшномуююю
    PHP:
            function SaveImg($myfile,$myfile_name,$dir,$pdir)
            {

                
    copy ($myfile,$dir.$myfile_name);
                
    $a=GetImageSize($myfile);

                
    $W=$a[0];
                
    $H=$a[1];


                
    $minH=150;
                
    $minW=$minH*$W/$H


                
    $fullW=350;
                
    $fullH=$H*$fullW/$W;


                if (
    $W<$minW or $W<$fullW)
                {
                    
    $minW=$W;
                    
    $fullW=$W;
                }

                
    $b=@imageCreateTrueColor($minW,$minH);
                
    //$w=@imageCreateTrueColor($fullW,($fullW*$W/$H));
                
    $w=@imageCreateTrueColor($fullW,$fullH);
                
    $c=@imageCreatefromJpeg("$myfile");

                @
    imagecopyresampled($b,$c,0,0,0,0,$minW,$minH,$W,$H);
                
    //($fullW*$W/$H)
                //echo "$minW х $minH <br>";

                
    @imagecopyresampled($w,$c,0,0,0,0,$fullW,$fullH,$W,$H);

                
    //echo "$fullW х $fullH<br>";

                
    @imageJpeg($b,$pdir.$myfile_name);

                @
    imageJpeg($w,$dir.$myfile_name);

            }
    :nezn:
     
  2. Nemesis

    Nemesis Прохожие

    griffon,
    h_ttp://forum.dklab.ru/viewtopic.php?t=20451
    h_ttp://forum.dklab.ru/viewtopic.php?t=23038
    довольно хорошие.
     
  3. endorfine

    endorfine Создатель

    Регистр.:
    23 мар 2007
    Сообщения:
    29
    Симпатии:
    1
  4. lost

    lost Постоялец

    Регистр.:
    15 фев 2007
    Сообщения:
    58
    Симпатии:
    31
    Пользуюсь
    http://phpthumb.sourceforge.net
    Очень быстро и качественно получаются превьюшки, использует ImageMagic.
    Вполне подойдет для использования для генерации маленьких картинок (ресайзинга больших), IMHO.
     
  5. endorfine

    endorfine Создатель

    Регистр.:
    23 мар 2007
    Сообщения:
    29
    Симпатии:
    1
    phpThumb.php?src=images/disk.jpg&w=200
    ???

    Ты хоть понимаешь что будет с сайтом при онлайне 50-100 человек? Нет? Ну попробуй :D
     
  6. WebTorin

    WebTorin Создатель

    Регистр.:
    28 мар 2007
    Сообщения:
    34
    Симпатии:
    0
    пользуюсь такой функцией, доволен, проблем не замечал


    PHP:
    function resizeimage($src$mwidth$mheight$destroy false){
                    
    $w imagesx($src);
                    
    $h imagesy($src);
                    if( 
    $w $mwidth || $h $mheight ){
                            
    $dx = (double)$w / (double)$mwidth;
                            
    $dy = (double)$h / (double)$mheight;
                            
    $d $dx $dy $dx $dy;
                            
    $nw = (int)((double)$w $d);
                            
    $nh = (int)((double)$h $d);
                            
    $dest imagecreatetruecolor($nw$nh);
                            
    imagecopyresampled($dest$src0000$nw$nh$w$h);
                            if( 
    $destroy imagedestroy($src);
                            return 
    $dest;
                    }
                    return 
    $src;
            }


    использую таким образом
    resizeimage
    ($site_path.$upload_dir.$fileNamee$thumb_width$thumb_height);
     
  7. FriendMaster

    FriendMaster Писатель

    Регистр.:
    4 фев 2007
    Сообщения:
    6
    Симпатии:
    0
    Я не буду давать исходников, так как это сейчас не столь важно. Но предложу вариант. Вот к примеру у нас есть база галереи. Пользователь заходит, добавляет фотку, вот в этот момент нужно создать маленькую картинку. Так что бы уже можно было с ней работать как с статической. Мне когдато закинули фотку на 2 метра, так у меня фильм на кампе притормажывал когда по сайту лазили. ....

    img_resize($thisfile , $smallfile, 100, 100);

    function img_resize($src, $dest, $width, $height, $rgb=0xFFFFFF, $quality=100){
    if (!file_exists($src)) return false;

    $size = getimagesize($src);

    if ($size === false) return false;

    $format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
    $icfunc = "imagecreatefrom" . $format;
    if (!function_exists($icfunc)) return false;

    $x_ratio = $width / $size[0];
    $y_ratio = $height / $size[1];

    $ratio = min($x_ratio, $y_ratio);
    $use_x_ratio = ($x_ratio == $ratio);

    $new_width = $use_x_ratio ? $width : floor($size[0] * $ratio);
    $new_height = !$use_x_ratio ? $height : floor($size[1] * $ratio);
    // $new_left = $use_x_ratio ? 0 : floor(($width - $new_width) / 2);
    // $new_top = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);

    // $k1=$neww/$with;
    // $k2=$newh/$height;
    // $k=$k1>$k2?$k2:$k1;

    // $w=intval($with*$k);
    // $h=intval($height*$k);


    $isrc = $icfunc($src);
    $idest = imagecreatetruecolor($new_width, $new_height);

    imagefill($idest, 0, 0, $rgb);
    imagecopyresampled($idest, $isrc, 0, 0, 0, 0,
    $new_width, $new_height, $size[0], $size[1]);

    imagejpeg($idest, $dest, $quality);

    imagedestroy($isrc);
    imagedestroy($idest);

    return true;

    }
     
  8. xpnet

    xpnet Прохожие

    Добавлю вариантик который я использую

    PHP:
    function img_resize($src$dest$width$height$rgb=0xffffff$quality=100)
        {
        if (!
    file_exists($src)) return false;
        
        
    $size getimagesize($src);
        
        if (
    $size === false) return false;
        
        
    // Определяем исходный формат по MIME-информации, предоставленной
        // функцией getimagesize, и выбираем соответствующую формату
        // imagecreatefrom-функцию.
        
    $format strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
        
    $icfunc "imagecreatefrom" $format;
        if (!
    function_exists($icfunc)) return false;
        
        
    $x_ratio $width $size[0];
        
    $y_ratio $height $size[1];
        
        
    $ratio       min($x_ratio$y_ratio);
        
    $use_x_ratio = ($x_ratio == $ratio);
        
        
    $new_width   $use_x_ratio  $width  floor($size[0] * $ratio);
        
    $new_height  = !$use_x_ratio $height floor($size[1] * $ratio);
        
    $new_left    $use_x_ratio  floor(($width $new_width) / 2);
        
    $new_top     = !$use_x_ratio floor(($height $new_height) / 2);
        
        
    $isrc $icfunc($src);
        
    $idest imagecreatetruecolor($width$height);
        
        
    imagefill($idest00$rgb);
        
    imagecopyresampled($idest$isrc$new_left$new_top00
        
    $new_width$new_height$size[0], $size[1]);
        
        
    imagejpeg($idest$dest$quality);
        
        
    imagedestroy($isrc);
        
    imagedestroy($idest);
        
        return 
    true;
        
        }


     
  9. endorfine

    endorfine Создатель

    Регистр.:
    23 мар 2007
    Сообщения:
    29
    Симпатии:
    1
    Есть только одна проблема, в опере миме-типы частенько выкидывают ошибку, т.е. надо использовать декодинг картинки по расширению.

    $size['mime']
     
  10. paramon77

    paramon77 Прохожие

    Самый лучший встроенный ресайз фоток я видел в Namo Web Editor 2006.. Простенький и работает отлично...:)
     
Статус темы:
Закрыта.