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

kv

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

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

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

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

В чем проблема, может уже обсуждалась и решение найдено, только я об этом не знаю?
 

Royal Flash

-=MaestrO=-
kv
Возможно, время выполнения скрипта заканчивается раньше, чем картинка загружается на сервер полностью?
 

kv

Новичок
Нет, дело не во времени. Я проверял. Самое большое время у PNG, т.к. и картинки там самые большие. А GIF-ы маленькие и отрабатываются быстрее.
 

Andreika

"PHP for nubies" reader
Royal Flash
а время "работы" скрипта начинается с момента отправки запроса?
 

kv

Новичок
Да, конечно.

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

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

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

-~{}~ 23.05.06 11:27:

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

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

kv

Новичок
Сейчас попробую..., спасибо

-~{}~ 23.05.06 13:33:

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

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

Может по этому поводу тоже есть какие мысли?
Сейчас попробую через временный файл, результат сообщу.
 

mani13

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

Пока из идей только: обновить gd.
 

kv

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

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

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

-~{}~ 23.05.06 16:33:

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

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

Значит буду обращаться к хостеру... (или может кто знает, как имея идентификатор картинки, получить её поток...)
 

Kostya

Новичок
могу ошибаться, но imagegif не во всех GD работает
в силу закрытости формата GIF
 

kv

Новичок
но gd_info говорит, что поддерживается полностью, т.е. и read, и create
 

Kostya

Новичок
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.
 
Сверху