При аплоаде бьется gif

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

vada

Новичок
При аплоаде бьется gif

Для загрузки картинок пользую самописный код (ImageMagick не использую), который работает уже несколько лет без проблем. Это - первая :)

Так вот, на днях случайно обнаружил, то при попытке загрузить gif-картинки, взятые из некоей микрософтовской (кажется, офисной) подборки, картинка изменяется, "портится" - визуально такое впечатление, что горизонтальные однопиксельные линии картинки сдвигаются относительно друг друга.
Пробовал загружать на пару "чужих" сайтов - грузилось нормально. Но какой на них механизм загрузки - не знаю.
Если же картинку предварительно открыть в редакторе и (ничего в ней не меняя) пересохранить опять же в gif - то аплоад происходит нормально и у меня.

При загрузке getimagesize тип картинки и размеры определяет корректно. Исключение - на "бьющемся" гифе getimagesize не возвращает [bits] => 3 (вообще такого элемента массива нет), который присутсвует для "небьющегося" гифа.
GD 2.0.28

Буду благодарен, если подскажете, в чем проблема и в каком направлении искать решение.
 
ты бы ссылкуу на картинку проблемную и код, который ее изменяет выложил, что ли...
 
А если картинку эту чисто сразу браузером посмотреть, локально, она нормально отображается?
 
горизонтальные однопиксельные линии картинки сдвигаются относительно друг друга.
Interlaced gif ?

-~{}~ 25.08.08 19:12:

Покажите код, выполняемый при загрузке.
 
dimagolov
Кусок кода, который обрабатывает изображение в данном случае (выкинул всё, не относящееся к ситуации)
PHP:
if (is_uploaded_file($this->loadfile['tmp_name'])) {
    $im = imagecreatefromgif($this->loadfile['tmp_name']);
    $this->to_dir .= '/'.$this->img_name.".gif";
    Imagegif($im, $this->to_dir);
    ImageDestroy($im);
    return filesize($this->to_dir);
}
картинки (бьющаяся, небьющаясяб и уже битая) тут: http://files.mail.ru/B1JRSH

kruglov
Да, локально браузером отображается нормально

флоппик
>>>Interlaced gif ?
нет. "Плохой" файл сохранял как Interlaced и нет - оба пересохраненные грузятся нормально в обоих случаях

-----------------------
поменял ссылку, добавил в архив битый файл
 
vada, пардон, а зачем такие сложности? Неужели его нельзя просто скопировать?
 
код в целом предусматривает различные ситации, в том числе изменения размеров, прорисовывания рамок, и тп. Я привел усеченный код.
Ну и мне просто хочется разобраться в ситуации
 
vada, посмотри в бинарном редакторе плохой файл. Там в начале есть заголовок "Software: Microsoft Office", видимо он не совсем корректно прописан. Видимо из-за этого ACDSee непонятные точки в первой строке отрисовывает.
 
dimagolov
Каких-то непонятных точек в первой строке я не вижу, сдвижка полос вроде бы "гладкая", ну да ладно. Понятно, что что-то внутри файла криво прописано, иначе бы не бился.

Просьба вот какая. Я с ImageMagic-ом не работал, и прям счас его поднимать мне недосуг. Если вдруг есть у кого под рукой скрипт загрузки, использующий ИмаджМэджик - попробуйте, плиз, через него загрузить файл bad.gif отсюда http://files.mail.ru/B1JRSH и сообщите результат сюда - в случае положительного результата по крайней мере буду знать, что есть работающая альтернатива.

Спасибо всем за попытку помочь.
 
fixxxer
Не думаю, что он может выборочно бить только картинки от майкрософта.
 
Автор оригинала: fixxxer
русский апач?
нет. в одном случае Apache/2.2.2 (Fedora), в другом Apache/1.3.33 (Win32)

Но натолкнул на мысль. Проверил работу скрипта на одном из доступных сайтов, что на забугорном хостинге, там GD посвежее - 2.0.34. И "Бьющаяся" картинка загрузилась нормально. Попробую покурить в этом направлении.

-~{}~ 27.08.08 00:34:

Да, до PHP 5.2.2 идет GD 2.0.28 на ней картинка бьется, начиная с 5.2.2 - GD 2.0.34 и на ней бьющая картинка грузится нормально
 
Сверху