Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Масштабирование
Форумы портала PHP.SU » Разное » Обсуждение статей » Масштабирование

Страниц (1): [1]
 

1. Troy - 20 Ноября, 2006 - 09:03:31 - перейти к сообщению
Очень хорошая статья, спасиба.
Вопрос такой - долго отрисовываються картинки - это проблема хостера?
2. f0rm4t - 20 Ноября, 2006 - 16:20:58 - перейти к сообщению
Попробуй засечь время генерации скрипта. По оценке которого и поймешь в чем причина.
3. Архей - 27 Декабря, 2006 - 12:05:45 - перейти к сообщению
Всем привет, статья хорошая, ничего сказать не могу, ном огу сказать пару слов в общем об этом методе.

Многие, а точнее практически все сталнулись или столкнуться с проблемой обработки больших изображений, тоесть закачав фотку размером 2500 на 2500 размером 1 Мег. Вы уже врядли сможете обработать фото таким вот макаром, если вы зайдете в Лог ошибок вы увидете критическую ошибку о нехватке виртуальной памяти выделенной на работоспособность скрипт. И на сколько я знаю, данная проблема не решается на библиотеках GD. Если кто-то знает метод решения, просьба отписаться. Я нашел решение в других библиотеках. Данная трабка касается Хостингов и никак Локальнонастроенных систем у себя на компе.
4. maksmib - 25 Ноября, 2010 - 18:07:58 - перейти к сообщению
Вечер добрый господа товарищи! Улыбка
Спасибо за статью, но возник ряд вопросов т.к. "завести" не получилось.

Итак, сам скрипт я немного переделал под свои нужды, теперь он выгляди так
файл resize.php:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. /* f - имя файла
  3.    q - качество сжатия
  4.    src - исходное изображение
  5.    dest - результирующее изображение
  6.    w - ширниа изображения
  7.    ratio - коэффициент пропорциональности */
  8.  
  9. // тип преобразования, если не указаны размеры
  10. $w = 218; // пропорциональная шириной 218
  11.  
  12. // качество jpeg по умолчанию
  13. if (!isset($q)) $q = 100;
  14.  
  15. // создаём исходное изображение на основе исходного файла и опеределяем его размеры
  16. $src = imagecreatefromjpeg($f);
  17. $w_src = imagesx($src);
  18. $h_src = imagesy($src);
  19.  
  20. header("Content-type: image/jpeg");
  21.  
  22. // если размер исходного изображения отличается от требуемого размера
  23. if ($w_src != $w)
  24. {
  25.         // вычисление пропорций
  26.     $ratio = $w_src/$w;
  27.     $w_dest = round($w_src/$ratio);
  28.     $h_dest = round($h_src/$ratio);
  29.  
  30.     // создаём пустую картинку
  31.     // важно именно truecolor!, иначе будем иметь 8-битный результат
  32.     $dest = imagecreatetruecolor($w_dest,$h_dest);
  33.     imagecopyresized($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src);
  34. }
  35.        
  36. // вывод картинки и очистка памяти
  37. imagejpeg($dest,'',$q);
  38. imagedestroy($dest);
  39. imagedestroy($src);
  40.  
  41. ?>


Использую так, чтобы просто проверить
файл gallery.php:

PHP:
скопировать код в буфер обмена
  1. ...
  2. include('resize.php');
  3. ...
  4. echo '<img src="resize.php?f=test.jpg" />';
  5. ...


В результате изображение не появляется, а получаю кучу варнингов (они там в принципе один из другого вытекают):


Для проверки я пробовал во время работы скрипта вывести содержимое переменной $f - она оказалась пустой. Не понял Почему не понятно.
2й пункт вытекает из первого, а вот почему 3й варнинг появляется, также не понятно.

Подскажите пожалуйста, что не так?
5. Мелкий - 25 Ноября, 2010 - 19:53:06 - перейти к сообщению
resize.php инклюдить не надо.
6. maksmib - 25 Ноября, 2010 - 22:27:10 - перейти к сообщению
Да действительно, спасибо. Но ничего не изменилось, изображения нет.

(Добавление)

Блин Нахмурился ...тупая ошибка! Ниндзя
что то я переработался и кумекалка не сработала, что параметр "f" скрипту как передается??! Правильно, в статье забыли добавить:

PHP:
скопировать код в буфер обмена
  1. if(isset($_GET['f']))
  2.    $f = $_GET['f'];
7. Мелкий - 25 Ноября, 2010 - 22:33:49 - перейти к сообщению
Запросите напрямую resize.php?f=test.jpg. Тут либо ошибка вываливается (отсылку заголовка отключите, должен сразу идти бинарный код) либо/и так - imagejpeg($dest,'',$q); - нельзя, только imagejpeg($dest).

и правда, не заметил, что параметр не получается в скрипте Закатив глазки
8. maksmib - 26 Ноября, 2010 - 07:57:01 - перейти к сообщению
Угу, я так и проверил, что и позволило понять ошибку.
Еще раз спасибо за наводку Улыбка

 

Powered by ExBB FM 1.0 RC1