Качественный ресайз картинки "на лету" без сохранения

Аватара пользователя
3xmax

Качественный ресайз картинки "на лету" без сохранения

Сообщение 3xmax »

Здавствуйте.

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

Есть задача на лету уменьшить размер картинки с 650 до 500 пикселей по ширине, а если размер менее или равен 500 то оставлять как есть.

Ниже код, который работает, но на выходе дает мягко говоря не очень качественое изображение.

Есть еще одна проблема, на странице может быть и несколько картинок подряд. И еще - нужно, чтобы урл на саму картинку остался прежним, иначе в гугл имидж все проиндексированные картинки вылетят.



Заранее спасибо за помощь и уж простите за наглость.



Код: Выделить всё

<?PHP
		$SQL = "SELECT * FROM $db_name_pict WHERE vis=0 AND id_work=$id";
		$vopr=mysql_query($SQL) or die ("No way. Can't select");
		while ($line = @mysql_fetch_array($vopr)) {
		extract($line);
		     $image =  "/home/domain/public_html/p/$urlpicbig";               
		     $size = getimagesize("$image");
		       $height = $size[1];
		       $width = $size[0];
		     if ($height > 650)
		          {
		               $height = 650;
		               $percent = ($size[1] / $height);
		               $width = ($size[0] / $percent);
		          }
		     else if ($width > 649)
		          {
		               $width = 500;
		               $percent = ($size[0] / $width);
		               $height = ($size[1] / $percent);
		          }
		     echo "<img src=\"http://www.domain.com/p/$urlpicbig\" height=\"$height\" width=\"$width\" />";}
				}
?>
Аватара пользователя
benya

Re: Качественный ресайз картинки "на лету" без сохранения

Сообщение benya »

Правильно. Вы же не режете картинку, а масштабируете в браузере. При таком подходе качественного изображения не будет. Нужно резать картинку и пересохранять чем-то типа Image-Magick. И урл на картинку можно оставить прежним используя mod_rewrite. Если это вам что-то говорит конечно...
Аватара пользователя
3xmax

Re: Качественный ресайз картинки "на лету" без сохранения

Сообщение 3xmax »

Дядя, так вы решили резать или открыли способ ресайза без сохранения? Изображение
Аватара пользователя
benya

Re: Качественный ресайз картинки "на лету" без сохранения

Сообщение benya »

Здравствуйте. Извините, что пишу в эту тему - решила, раз подобная тема уже существует, то незачем создавать еще одну.

У меня похожая ситуация, я генерирую тумбы "на лету", только проблема в том, что до их вывода у меня выводится еще масса всякой всячины, т.е. хидер header("Content-type: image/jpeg") я отослать не могу, и соответственно, поскольку кракозябры вместо изображения никого не порадуют, приходится сохранять тумбы на диске. Может есть у кого идеи, как же все-таки обойтись без сохранения на диск и умудриться отослать этот чертов хидер? Идея использовать буферизацию у меня оптимизма не вызывает, поскольку контент выводится несколькими модулями =/

Заранее благодарна за помощь.
Аватара пользователя
vadimiron

Re: Качественный ресайз картинки "на лету" без сохранения

Сообщение vadimiron »

Jackdaw,

Сделайте скрипт, который выводит только нужную картинку. И вставляйте адрес этого скрипта в HTML тег img



HTML код:



Вот в этом скрипте и выводите нужные хедеры
Аватара пользователя
benya

Re: Качественный ресайз картинки "на лету" без сохранения

Сообщение benya »

Jackdaw,

У вас наверное неправильный стиль программирования. Сами напутали, а нам тем более непонятно. Зачем много модулей выводят одно и тоже? Или одно частями? Изображение

Да и зачем вам тумбы на лету? Они будут генерироваться невыносимо долго на самом быстром сервере.
Аватара пользователя
Jackdaw

Re: Качественный ресайз картинки "на лету" без сохранения

Сообщение Jackdaw »

vadimiron,

Спасибо за советИзображение К сожалению, в таком варианте джипег, который подается на вход, скрипт самым странным образом не видит...

Warning: imagecreatefromjpeg("img/flats/50.jpg") [function.imagecreatefromjpeg]: failed to open stream: No such file or directory [...]

вот скрипт res_perc.php



Хотя если вызывать не скрипт, а инклудить функцию с точно таким же кодом, то та же функция imagecreatefromjpeg, которая и выдает ошибку, этот файл прекрасно видит... В чем тут дело - ума не приложу...



benya,

Я ничего не путала Изображение Я сейчас работаю над порталом недвижимости, надеюсь, Вы не обидитесь, если я на Вашу шпильку о стиле программирования отвечу тем же - надеюсь, Вы имеете представление о том, как генерятся страницы с динамическим содержанием, включающие выборки из базы данных, ленты новостей и прочую информацию... А насчет времени генерации - я в курсе Изображение Но так уж сложилось, что мне нужно с этим разобраться.
Ответить

Вернуться в «Вебмастеру»