Уменьшение размера картинки

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

Swat

Новичок
Уменьшение размера картинки

Добрый день ;) Хотел бы подсказки по уменьшению картинки и сохранении более-менее желаемого качества.... Перекапал интернет не нашел подходящей функции... В данный момент нашел такую...

PHP:
function resize($cur_dir,$part) {
	$newwidth = 172;
    $dir = opendir('products/'.$cur_dir);
    $filename = SITE_DIR_LOCAL.'products/'.$cur_dir.'/'.$part.'.jpg'; 
    $format='';
    if(preg_match("/.jpg/i", "$filename"))
    {
        $format = 'image/jpeg';
    }
    if (preg_match("/.gif/i", "$filename"))
    {
        $format = 'image/gif';
    }
    if(preg_match("/.png/i", "$filename"))
    {
        $format = 'image/png';
    }
    if($format!='')
    {
        list($width, $height) = getimagesize($filename);
        $newheight=$height*$newwidth/$width;
        switch($format)
        {
            case 'image/jpeg':
            $source = imagecreatefromjpeg($filename);
            break;
            case 'image/gif';
            $source = imagecreatefromgif($filename);
            break;
            case 'image/png':
            $source = imagecreatefrompng($filename);
            break;
        }
        $thumb = imagecreatetruecolor($newwidth,$newheight);
        imagealphablending($thumb, false);
        $source = @imagecreatefromjpeg("$filename");
        imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
        $filename = SITE_DIR_LOCAL.'products/'.$cur_dir.'/'.$part.'-small.jpg';
        imagejpeg($thumb, $filename);

		echo $filename.' - ОК<br>';


    }
}
Но качество плохое... некоторые файлы вообще как черный квадрат... хотелось бы получше... подскажите пожалуйста что тут надо подправить либо какую-нибудь готовую функцию... заранее очень сильно благодарен ;)
 

AmdY

Пью пиво
Команда форума
фак, копать надо знать где, я бы начал с онлайн мануала по этим функциям, сам стащил в своё время функцию ;)
 

TutanXamoN

Новичок
AmdY
Вот в последнее время убеждаюсь в том что таскать стоит поменьше ибо трудозатраты на поиск ошибки в чужой ф-ции превышают требуемые для написания своей(хотя часто и заводится с пол-оборота и работает вроде, а потом...).
 

Balancer

Новичок
Рекомендую PEAR Image/Transform.php

Пример использования: http://hg.balancer.ru/hgwebdir/bors-core/file/385df3552a4c/inc/images.php
 

Glazyrin Sergey

Новичок
Забудьте PEAR - зачем он нужен ? Вы знаете склько кода в PEAR ? Можно написать функцию класс, который в 10-20 раз меньше занимает кода
 

nerezus

Вселенский отказник
Glazyrin Sergey
Забудь про винду/лялих. Зачем они нужны? Ты знаешь сколько в ней кода? Можно написать ОС, котороя в 10-20 раз меньше занимает кода.
 

pilot911

Новичок
Автор оригинала: Glazyrin Sergey
Забудьте PEAR - зачем он нужен ? Вы знаете склько кода в PEAR ? Можно написать функцию класс, который в 10-20 раз меньше занимает кода
PEAR проверен и поддерживается, да и время жалко, если код по скорости не критичен

поэтому имеет смысл импользовать PEAR
 

Balancer

Новичок
Автор оригинала: Glazyrin Sergey
Забудьте PEAR - зачем он нужен ?
Чтобы не изобретать и не поддерживать потом велосипеды. Когда пишешь одну страничку - можно всё сделать самому. Когда несколько крупных проектов - грех не воспользоваться тем, что уже люди сделали за тебя.
 

Glazyrin Sergey

Новичок
Именно на крупном проекте убеждаешься, что PEAR - зло
Да и плох тот программист, который пользуется всем готовым
PS Я не говорю что я не пользуюсь чем то готовым даже больше чем мне хотелось бы
Но надо по крайней мере какие то банальные вещи попробовать написать самому
А ресайз картинки - одна из таких банальностей
 

nerezus

Вселенский отказник
> Да и плох тот программист, который пользуется всем готовым
Это тебе бабушка сказала?
 

Balancer

Новичок
>Да и плох тот программист, который пользуется всем готовым

То есть Вы и PHP сами написали, и Apache/Nginx/Lighttpd, и MySQL? ;)

Плох тот программист, который делает ненужную работу.

>А ресайз картинки - одна из таких банальностей

До тех пор, пока проект пишется под одну конкретную систему. Ибо крупный проект может работать и там, где один голый PHP без GD, и на GD, и с Imagick, и, завтра, ещё с чем-то. Воспользоваться готовым модулем - это полчаса работы вместе с экспериментами. Писать самому многофункциональную систиему - несколько дней тестов. И без уверенности, что оно заработает где-то ещё.
 

Glazyrin Sergey

Новичок
Нет дедушка :)

-~{}~ 08.02.09 15:28:

Автор оригинала: Balancer
>Да и плох тот программист, который пользуется всем готовым

То есть Вы и PHP сами написали, и Apache/Nginx/Lighttpd, и MySQL? ;)

Плох тот программист, который делает ненужную работу.
Вы видно не читали того, что я написал - что не все надо брать готовое - уважаемый я не говорил того, что вы сказали выше
А особенно это нужно для новичков которые потом научатся за любым куском кода лезть в инет
>А ресайз картинки - одна из таких банальностей

До тех пор, пока проект пишется под одну конкретную систему. Ибо крупный проект может работать и там, где один голый PHP без GD, и на GD, и с Imagick, и, завтра, ещё с чем-то. Воспользоваться готовым модулем - это полчаса работы вместе с экспериментами. Писать самому многофункциональную систиему - несколько дней тестов. И без уверенности, что оно заработает где-то ещё.
Многофункциональную систему ? - это вы называете ресайз картинки ?
Хм. Тогда посыпаю голову пеплом, если за таким ф-ом надо брать готовый класс
 

Balancer

Новичок
>Хм. Тогда посыпаю голову пеплом, если за таким ф-ом надо брать готовый класс

Так что Вы будете делать, если в системе есть Image::Magick? По-прежнему использовать убогий и ограниченный imagecopyresampled? Начнёте дописывать функционал?

Пока Вы всем этим будете страдать, я просто допишу один include :)
 

Фанат

oncle terrible
Команда форума
Balancer, ты так пишешь, как будто это "страдание" на много месяцев, а не на несколько минут.

Я допишу ресайзилку на имеджике за примерно столько же времени, сколько тебе понадобится, чтобы изучить все методы этого класса.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху