Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вопрос про превьюшку.
 
 автор: Vasil   (01.06.2006 в 16:02)   письмо автору
 
 

Читал сейчас сидел форум...много про превьюшки написанно.
Я так понимаю, что превьюшку создаёт PHP при помощи GDlib.
Ему есть разница. откуда брать файл...из базы данных или из простой папки?!
Суть такая, что в базу грузить картинки - муторно, проще папку по ftp на сервак хостера заслать. И не нужно сохранять маленькие картинки на сервере они ведь место поедают.
Можно ли осуществить такое, чтоб скрипт брал jpg файл из папки images, затем сочинял из большой картинки маленькую, выдавал в браузер, но не сохранял на сервере?!

   
 
 автор: WebTech   (01.06.2006 в 17:14)   письмо автору
 
   для: Vasil   (01.06.2006 в 16:02)
 

Вот, как я это делаю
Надо создать файл, например img_resize.php и в него положить скрипт

<?php
$dst_h 
$_GET['h']; // высота, до которой надо уменьшить, ширина вычисляется пропорционально
$filename $_GET['f']; // имя файла, который необходимо уменьшить
$src_img imagecreatefromjpeg("images/".$filename); // идентификатор исходного изображения
$img_size getimagesize("images/".$filename);
$src_w $img_size[0]; $src_h $img_size[1]; // здесь размеры исходного файла
$src_ratio $src_w $src_h// отношение сторон исходного изображения
$dst_w $dst_h $src_ratio// вычисляем ширину выходного изображения
$dst_img imagecreatetruecolor($dst_w$dst_h);      // создаем выходное изображение
$white imagecolorallocate($dst_img255255255); //
imagecopyresampled($dst_img$src_img0000$dst_w$dst_h$src_w$src_h); // проводим масштабирование 
header ("content-type: image/jpeg");
imagejpeg($dst_img);
imagedestroy($dst_img); 
imagedestroy($src_img); 
?>


Затем, там, где надо вставить превьюшку, вставьте тег

<img src="img_resize.php?h=100&f=img.jpg">

вместо 100 поставьте нужную высоту превьюшки, вместо img.jpg - имя файла, для которого надо сделать превьюшку.

   
 
 автор: Vasil   (01.06.2006 в 18:03)   письмо автору
 
   для: WebTech   (01.06.2006 в 17:14)
 

А если мне нужно уменьшить 8 рисуночков для одной страницы?!
Это мне нужно для каждого скрипт писать...а вообще сервер справится??

   
 
 автор: WebTech   (01.06.2006 в 18:13)   письмо автору
 
   для: Vasil   (01.06.2006 в 18:03)
 

Тогда надо на странице в нужных местах расставить 8 тегов вида

<img src="img_resize.php?h=100&f=img.jpg">

Естественно с разным значением f

Но если превьюшек будет много, то сервер начнет притормаживать конечно же :-(
GD, как я понимаю, ощутимо жрет ресурсы. На моем P-IV, 3 ГГц, 512Mb, Apache 1.3.27, PHP5.0.4 с GD2 на локалхосте при одновременном создании 20 превьюшек хорошо заметно замедление работы. А на виртуальном хостинге и того хуже будет. А если хостинг еще и бесплатный, на котором все урезают до безобразия, GD вообще может не работать при обработке больших изображение (и может быть и не очень больших). Будет вылетать из-за нехватки памяти :-(

   
 
 автор: Vasil   (01.06.2006 в 18:29)   письмо автору
 
   для: WebTech   (01.06.2006 в 18:13)
 

Да неа...хостинг платный, вроде быстро всё выдаёт... что-то у меня скрипт только-вот не выполняется...Сплошные строки недовольства...ругается...

   
 
 автор: Vasil   (01.06.2006 в 18:46)   письмо автору
 
   для: Vasil   (01.06.2006 в 18:29)
 

Ошибки исчесзли, а привьюшки как не было, так и нет.. 8/

   
 
 автор: WebTech   (01.06.2006 в 18:47)   письмо автору
 
   для: Vasil   (01.06.2006 в 18:29)
 

Конкретно - на что ругается? Какая версия GD?

   
 
 автор: Vasil   (01.06.2006 в 18:55)   письмо автору
 
   для: WebTech   (01.06.2006 в 18:47)
 

GD - 2.0.28
В начале, ругалась PHP, что мол мне файл вместо текста подсовываете...
я тады header наверх добавил, мол типа content-type image/jpeg и всё такое...
Подозреваю, что не может файл с директории поднять, прав не хватает чтоли..

   
 
 автор: WebTech   (01.06.2006 в 19:04)   письмо автору
 
   для: Vasil   (01.06.2006 в 18:55)
 

Права тут ни при чем.
img_resize.php и папка images должны находится на одном уровне в дереве каталогов.
Второй возможный вариант - как я раньше написал, не хватает ресурсов для скрипта :-( Вполне возможно, если вы обрабатываете большое изображение.
Посмотрите лог с ошибками PHP, если есть такая возможность.

А на локальном сервере не проверяли скрипт?

   
 
 автор: Vasil   (01.06.2006 в 19:15)   письмо автору
 
   для: WebTech   (01.06.2006 в 19:04)
 

Картинка1024*768 и 112 килобайт весом.
Проверяю на локальном сервере.
Вроде бы что-то там думает долю секунды, а изображение не отдаёт....гадина :]

   
 
 автор: WebTech   (01.06.2006 в 19:25)   письмо автору
 
   для: Vasil   (01.06.2006 в 19:15)
 

Посмотрите, что в error.log пишут.

   
 
 автор: Trianon   (01.06.2006 в 19:30)   письмо автору
 
   для: Vasil   (01.06.2006 в 19:15)
 

Зря Вы с этой идеей связались.
Ничем хорошим она Вам не светит.
Место под превьюшки требуется обычно куда меньше, чем под оригиналы.
А нагрузка на процессор хоста - изрядная.
Это даже если забыть, отм, что у Вас появятся проблемы с кешированием.
И не только у Вас (хотя Вам траффик тоже дожен быть небезразличен) но и у тех, кто на Ваш сайт придет.
Куда ни плюнь - везде одни минусы.
Мораль: Превьюшку, однажды создав, следует записать в файл.
Пользователю следует давать ссылку на этот файл.

   
 
 автор: WebTech   (01.06.2006 в 19:36)   письмо автору
 
   для: Trianon   (01.06.2006 в 19:30)
 

Но должно же заработать. Чисто академический интерес :-)

В остальном я с Вами согласен :-) Сам бросил этот способ после того как попробовал.

   
 
 автор: Trianon   (01.06.2006 в 19:40)   письмо автору
 
   для: WebTech   (01.06.2006 в 19:36)
 

Так заработает, кто ж возражает.
Более того, можно будет использовать изрядную часть этого скрипта для формирования файлов.

   
 
 автор: Vasil   (01.06.2006 в 19:39)   письмо автору
 
   для: Trianon   (01.06.2006 в 19:30)
 

Причину нашёл и устранил....оказалось, что всё дело было в расширении, записанном в верхнем регистре, (кто знал, что эта GаDина такая привиреда). Последнее ваше высказывание нашло отражение в том, что я тоже об этом думал. Особенно, когда посмотрел, сколько места она (превьюшка) занимает 7 килобайт.....Но на сайте моём их будетоё как много....я наверно подсчитаю предварительно сколько места будет занимать, а потом решу, (кстати у хостера работать не хотит.)
Спасибо за помощь...

   
 
 автор: Trianon   (01.06.2006 в 19:44)   письмо автору
 
   для: Vasil   (01.06.2006 в 19:39)
 

Вот. Посчитайте. :) Потом сравните с суммарным размером исходных изображений. И поймете, что размером preview можно пренебечь. Потом немного подумаете, и поймете - чтобы до этого вывода дойти, не нужно было подсчитывать суммарные размеры.

   
 
 автор: Vasil   (01.06.2006 в 20:01)   письмо автору
 
   для: Trianon   (01.06.2006 в 19:44)
 

Тут дело даже не в выводах, а внепостижимости работы скрипта...: каким-то необычным образом, он заработал на сервере хостера...кстати я подсчитал и думаю, что придётся использовать привьюшки, только в том случае, если по обычному dialup-у сайт будет относительно быстро загружаться., к тому же у меня там будет только одна страничка, где они (превьюшки) будут.
Тема-то какая интересная....глядите сколько напостили...:)

   
 
 автор: targa   (01.06.2006 в 17:17)   письмо автору
 
   для: Vasil   (01.06.2006 в 16:02)
 

Можно. Здесь даже пример есть
Например тут - http://softtime.ru/info/articlephp.php?id_article=38

   
 
 автор: Vasil   (01.06.2006 в 17:36)   письмо автору
 
   для: targa   (01.06.2006 в 17:17)
 

Обязательно испробую. Блин, только не успеваю...Конечно же спасиба.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования