|
Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Качественный ресайз картинки "на лету" без сохранения |
|
|
Качественный ресайз картинки "на лету" без сохранения
|
Новый участник Сообщения: 2 |
Здавствуйте.
Сам я даже не начинающий програмист. Дизайнер я. По части программинга чаще пользуюсь тем, что найду в сети, иногда получаются какие-то элементарные вещи. Поэтому даже вполне рабочий со слов людей код требующий доработки я вряд ли смогу приладить для своих нужд. Есть задача на лету уменьшить размер картинки с 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 |
![]() Старожил Сообщения: 302
|
Профиль | Сайт | Отправить PM | Цитировать Правильно. Вы же не режете картинку, а масштабируете в браузере. При таком подходе качественного изображения не будет. Нужно резать картинку и пересохранять чем-то типа Image-Magick. И урл на картинку можно оставить прежним используя mod_rewrite. Если это вам что-то говорит конечно...
|
Последний раз редактировалось benya, 31-10-2007 в 19:35. Отправлено: 18:33, 31-10-2007 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать Спасибо за наводку. Скрипт найден. :-)
|
Отправлено: 11:21, 01-11-2007 | #3 |
![]() Старожил Сообщения: 302
|
Профиль | Сайт | Отправить PM | Цитировать Дядя, так вы решили резать или открыли способ ресайза без сохранения?
![]() |
Отправлено: 12:27, 01-11-2007 | #4 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Здравствуйте. Извините, что пишу в эту тему - решила, раз подобная тема уже существует, то незачем создавать еще одну.
У меня похожая ситуация, я генерирую тумбы "на лету", только проблема в том, что до их вывода у меня выводится еще масса всякой всячины, т.е. хидер header("Content-type: image/jpeg") я отослать не могу, и соответственно, поскольку кракозябры вместо изображения никого не порадуют, приходится сохранять тумбы на диске. Может есть у кого идеи, как же все-таки обойтись без сохранения на диск и умудриться отослать этот чертов хидер? Идея использовать буферизацию у меня оптимизма не вызывает, поскольку контент выводится несколькими модулями =/ Заранее благодарна за помощь. |
|
Отправлено: 15:10, 01-11-2007 | #5 |
![]() Ветеран Сообщения: 1864
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 16:37, 01-11-2007 | #6 |
![]() Старожил Сообщения: 302
|
Профиль | Сайт | Отправить PM | Цитировать Jackdaw,
У вас наверное неправильный стиль программирования. Сами напутали, а нам тем более непонятно. Зачем много модулей выводят одно и тоже? Или одно частями? ![]() Да и зачем вам тумбы на лету? Они будут генерироваться невыносимо долго на самом быстром сервере. |
Отправлено: 20:39, 01-11-2007 | #7 |
Новый участник Сообщения: 3
|
Профиль | Отправить 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 |
![]() Ветеран Сообщения: 1864
|
Профиль | Отправить PM | Цитировать А что file_exists() выдаёт?
|
------- Отправлено: 23:53, 01-11-2007 | #9 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Что все ок =/
|
Отправлено: 00:42, 02-11-2007 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|