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

Статус
В этой теме нельзя размещать новые ответы.

griffon

Создатель
Регистрация
12 Авг 2006
Сообщения
30
Реакции
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:
 
griffon,
h_ttp://forum.dklab.ru/viewtopic.php?t=20451
h_ttp://forum.dklab.ru/viewtopic.php?t=23038
довольно хорошие.
 
Пользуюсь
Для просмотра ссылки Войди или Зарегистрируйся
Очень быстро и качественно получаются превьюшки, использует ImageMagic.
Вполне подойдет для использования для генерации маленьких картинок (ресайзинга больших), IMHO.
 
Пользуюсь
Для просмотра ссылки Войди или Зарегистрируйся
Очень быстро и качественно получаются превьюшки, использует ImageMagic.
Вполне подойдет для использования для генерации маленьких картинок (ресайзинга больших), IMHO.
phpThumb.php?src=images/disk.jpg&w=200
???

Ты хоть понимаешь что будет с сайтом при онлайне 50-100 человек? Нет? Ну попробуй :D
 
пользуюсь такой функцией, доволен, проблем не замечал


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, $src, 0, 0, 0, 0, $nw, $nh, $w, $h);
                        if( $destroy ) imagedestroy($src);
                        return $dest;
                }
                return $src;
        }


использую таким образом
resizeimage($site_path.$upload_dir.$fileNamee, $thumb_width, $thumb_height);
 
Я не буду давать исходников, так как это сейчас не столь важно. Но предложу вариант. Вот к примеру у нас есть база галереи. Пользователь заходит, добавляет фотку, вот в этот момент нужно создать маленькую картинку. Так что бы уже можно было с ней работать как с статической. Мне когдато закинули фотку на 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;

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

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  ? 0 : floor(($width - $new_width) / 2);
    $new_top     = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);
    
    $isrc = $icfunc($src);
    $idest = imagecreatetruecolor($width, $height);
    
    imagefill($idest, 0, 0, $rgb);
    imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0, 
    $new_width, $new_height, $size[0], $size[1]);
    
    imagejpeg($idest, $dest, $quality);
    
    imagedestroy($isrc);
    imagedestroy($idest);
    
    return true;
    
    }
 
Есть только одна проблема, в опере миме-типы частенько выкидывают ошибку, т.е. надо использовать декодинг картинки по расширению.

$size['mime']
 
Самый лучший встроенный ресайз фоток я видел в Namo Web Editor 2006.. Простенький и работает отлично...:)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху