Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Качественный ресайз картинки "на лету" без сохранения

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

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здавствуйте.
Сам я даже не начинающий програмист. Дизайнер я. По части программинга чаще пользуюсь тем, что найду в сети, иногда получаются какие-то элементарные вещи. Поэтому даже вполне рабочий со слов людей код требующий доработки я вряд ли смогу приладить для своих нужд.
Есть задача на лету уменьшить размер картинки с 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\" />";}
		
				}
			
?>

Отправлено: 17:26, 31-10-2007

 

Аватара для benya

Старожил


Сообщения: 302
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


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

Последний раз редактировалось benya, 31-10-2007 в 19:35.


Отправлено: 18:33, 31-10-2007 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо за наводку. Скрипт найден. :-)

Отправлено: 11:21, 01-11-2007 | #3


Аватара для benya

Старожил


Сообщения: 302
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


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

Отправлено: 12:27, 01-11-2007 | #4


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 15:10, 01-11-2007 | #5


Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


Jackdaw,
Сделайте скрипт, который выводит только нужную картинку. И вставляйте адрес этого скрипта в HTML тег img
HTML код: Выделить весь код
<img src='get_image.php?image_id=1234' />

Вот в этом скрипте и выводите нужные хедеры

-------
Fortes fortuna adiuvat


Отправлено: 16:37, 01-11-2007 | #6


Аватара для benya

Старожил


Сообщения: 302
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


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

Отправлено: 20:39, 01-11-2007 | #7


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


vadimiron,
Спасибо за совет К сожалению, в таком варианте джипег, который подается на вход, скрипт самым странным образом не видит...
Warning: imagecreatefromjpeg("img/flats/50.jpg") [function.imagecreatefromjpeg]: failed to open stream: No such file or directory [...]
вот скрипт res_perc.php
<?
$im=imagecreatefromjpeg($infile);
$w=imagesx($im)*$perc/100;
$h=imagesy($im)*$perc/100;
$im1=imagecreatetruecolor($w,$h);
imagecopyresampled($im1,$im,0,0,0,0,$w,$h,imagesx($im),imagesy($im));

header("Content-type: image/jpeg");
imagejpeg($im1,"",$qual);
imagedestroy($im);
imagedestroy($im1);
?>
Хотя если вызывать не скрипт, а инклудить функцию с точно таким же кодом, то та же функция imagecreatefromjpeg, которая и выдает ошибку, этот файл прекрасно видит... В чем тут дело - ума не приложу...

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

Отправлено: 22:02, 01-11-2007 | #8


Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


А что file_exists() выдаёт?

-------
Fortes fortuna adiuvat


Отправлено: 23:53, 01-11-2007 | #9


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Что все ок =/

Отправлено: 00:42, 02-11-2007 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Качественный ресайз картинки "на лету" без сохранения

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
EVGA EVBot Overclocking Tool - разгон системы "на лету" OSZone News Новости железа 0 21-12-2009 19:30
[решено] Программа для сохранения истории обращения к различным "машинам" в сети. pingUIN Хочу все знать 1 09-11-2009 23:51
Интерфейс - [решено] Как удалить папку "Моя музыка","Мои Картинки", "Мое видео"? verdix Microsoft Windows 2000/XP 3 03-10-2009 23:46
Как нормализовать звук "на лету" в плеере? Analog Видео и аудио: обработка и кодирование 1 03-05-2009 22:41
Интернет - не удается "открыть" файл (без сохранения) при скачивании из internet explorer'а goldsky Microsoft Windows 2000/XP 10 24-10-2008 09:23




 
Переход