почему не отрабатывает imagegif

  • Автор темы Автор темы kv
  • Дата начала Дата начала

kv

Новичок
почему не отрабатывает imagegif

В каталоге /image есть картинки: jpg, png и gif

скрипт распознает тип картинки по расширению и выводит в браузер, соответственно, функциями: imagejpeg, imagepng и imagegif.

Две первые функции работают корректно, а вот imagegif, не всегда, но часто - то обрезает картинку, то выводит с артефактами: некорректные цвета, хаотичные точки и т.д.
Причем, чем медленнее скорость у клиента, тем чаще подобные ошибки.

В чем проблема, может уже обсуждалась и решение найдено, только я об этом не знаю?
 
kv
Возможно, время выполнения скрипта заканчивается раньше, чем картинка загружается на сервер полностью?
 
Нет, дело не во времени. Я проверял. Самое большое время у PNG, т.к. и картинки там самые большие. А GIF-ы маленькие и отрабатываются быстрее.
 
Royal Flash
а время "работы" скрипта начинается с момента отправки запроса?
 
Да, конечно.

Вообщем, идет обращение к базе данных из разных частей сайта по ID. В базе хранятся имена файл-картинок. Все картинки в одном каталоге. Имя считывается из базы, проверяется расширение, загружается из файла (imagecretefrom...) и отправляется в браузер (image...).

Все очень просто.
Пробовал обернуть ob_start --- ob_end_flush.
Скрипт отрабатывает до конца.

Пробовал на стороне клиента javascript-ом отрабатывать ошибку: onerror для img. Она срабатывает всегда и входит в бесконечный цикл для всех картинок...

-~{}~ 23.05.06 11:27:

Обнаружил ещё одну особенность:

если я считываю файл GIF, а вывожу потом функцией:
imagepng() (естественно, с предварительным заголовком image/png), то ошибок становится меньше, но тем не менее, они все равно есть и на PNG...
 
Сейчас попробую..., спасибо

-~{}~ 23.05.06 13:33:

Да, так пока работает,
отправляю заголовок, потом print( file_get_contents() ) Попробовал раз 20.
Еще раз спасибо, большая часть проблемы решена.

...но некоторые картинки (не все), мне надо резать, т.е. брать только верхушку, полоску, высотой 25px...

Может по этому поводу тоже есть какие мысли?
Сейчас попробую через временный файл, результат сообщу.
 
...но некоторые картинки (не все), мне надо резать, т.е. брать только верхушку, полоску, высотой 25px...
Так, с этим сложнее.
Неправильно работает только на каких-то конкретных изображениях?
Или произвольным образом?

Пока из идей только: обновить gd.
 
Неправильно работает произвольным образом, как если обрывается связь, а рисунок еще не закачан.

Обновить GD не могу, она у хостера.

С временным файлом пока не пробовал, отвлекли дела срочные. Сейчас попробую в ближайшие 20 мин...

-~{}~ 23.05.06 16:33:

Вообщем, похоже проблемы у хостера с GD, т.к. при выводе во временный файл (создавал с именем PHPSESSID и расширением .gif функцией imagegif) все равно из 100, примерно, обращений 2-3 сбойных!

Из файла брал уже функцией file_get_contents... и потом удалял врем. файл.

Значит буду обращаться к хостеру... (или может кто знает, как имея идентификатор картинки, получить её поток...)
 
могу ошибаться, но imagegif не во всех GD работает
в силу закрытости формата GIF
 
но gd_info говорит, что поддерживается полностью, т.е. и read, и create
 
Since all GIF support was removed from the GD library in version 1.6, this function is not available if you are using that version of the GD library. Support is expected to return in a version subsequent to the rerelease of GIF support in the GD library in mid 2004. For more information, see the GD Project site.
 
Сверху