Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2] 3  Все   Вниз
  Печать  
Автор Тема: Как сделать GIF вручную (вернее - программно)  (Прочитано 62698 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #30 : 09-09-2011 20:07 » 

где кто что отклонил ? Я ничего не отклонял )

А с этими исходниками всё равно что-то неладно - например, структуры Colour и GifPalette нигде не определены

Добавлено через 1 минуту и 46 секунд:
ааа, увидел. Я как-то пропустил этот пост
« Последнее редактирование: 09-09-2011 20:09 от Алексей1153 » Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #31 : 09-09-2011 20:17 » 

Леш, а какая религия запрещает использовать готовые библиотеки? Сомневаюсь, что поиск нужного будет медленнее аврального написания своего кодера.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #32 : 09-09-2011 20:19 » 

RXL, да не нашёл я готовых. Или искать не умею Жаль Вот сейчас пытаюсь вот это скомпилить

А можно и в сторону giflib посмотреть,
Записан

RuNTiME
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #33 : 09-09-2011 20:20 » 

Цитата
А с этими исходниками всё равно что-то неладно - например, структуры Colour и GifPalette нигде не определены

Упс Улыбаюсь Там оказывается не все исходники... Вот ссылка на все исходники: http://enchantia.com/graphapp/package/src/

Эти структуры определены в app.h
Записан

Любимая игрушка - debugger ...
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #34 : 09-09-2011 20:26 » 

Не берите исходники где не попадя! Берите в первоисточнике!

http://sourceforge.net/projects/giflib/
http://sourceforge.net/projects/giflib/files/giflib%204.x/giflib-4.1.6/

Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #35 : 09-09-2011 20:28 » 

RuNTiME, а это возможно как-то всё разом скачать ?
Записан

RuNTiME
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #36 : 09-09-2011 20:29 » 

Алексей1153++, Конечно можно: http://enchantia.com/graphapp/download/index.html
Записан

Любимая игрушка - debugger ...
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #37 : 09-09-2011 20:29 » 

Не берите исходники где не попадя! Берите в первоисточнике!

http://sourceforge.net/projects/giflib/
http://sourceforge.net/projects/giflib/files/giflib%204.x/giflib-4.1.6/



Ром, это я только что пытался использовать - не продрался сквозь ругань студии

Добавлено через 2 минуты и 38 секунд:
RuNTiME, о, спасибо ) Всё, ушёл разбираться и распутываться)
« Последнее редактирование: 09-09-2011 20:32 от Алексей1153 » Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #38 : 09-09-2011 20:32 » 

Леш, это Си.

extern "C" { .... }

Использовал?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RuNTiME
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #39 : 09-09-2011 20:35 » 

Алексей1153++, Думаю эта giflib будет по "сговорчивей": http://gnuwin32.sourceforge.net/packages/giflib.htm. К тому же там доступны Developer пакеты уже скомпилированные.
Записан

Любимая игрушка - debugger ...
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #40 : 09-09-2011 20:35 » 

http://gnuwin32.sourceforge.net/packages/giflib.htm
Вот порт Giflib на win32.

Добавлено через 15 секунд:
RuNTiME, синхронно Улыбаюсь

Добавлено через 2 минуты и 16 секунд:
Только порт является сборкой с MinGW и требует еще пары библиотек. Там же даны на них ссылки:
http://gnuwin32.sourceforge.net/packages/libgw32c.htm
http://gnuwin32.sourceforge.net/packages/urt.htm
« Последнее редактирование: 09-09-2011 20:38 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #41 : 09-09-2011 21:05 » 

ааа, это жесть не хуже разбора формата гифа )))

А у меня ещё и проект юникодный ))
Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #42 : 09-09-2011 21:07 » 

Леш, да там заголовок на две страницы всего...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #43 : 09-09-2011 21:21 » 

да что-то не получается так просто. Одно за другим сыплется - этого не хватает, того. Или я не то смотрю

начинал с этого хидера - GifWin.h

Добавлено через 4 минуты и 2 секунды:
всё, я утонул в ошибках компиляции и прочей херне Жаль

засыпаю, завтра продолжу
« Последнее редактирование: 09-09-2011 21:25 от Алексей1153 » Записан

RuNTiME
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #44 : 10-09-2011 08:41 » 

Алексей1153++, Я написал небольшой примерчик, который создает C:\test.gif (черный квадрат 512x512) с использованием giflib. Проект для Visual Studio 2005 во вложении.

* giflib_test.zip (139.45 Кб - загружено 766 раз.)
Записан

Любимая игрушка - debugger ...
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #45 : 10-09-2011 10:08 » 

RuNTiME, благодарю, только я сейчас вот из этого http://www.solidfluid.co.uk/sfsite.php/000000CF собираю рабочую версию, там вроде немного разобрался. Если опять не пойдёт, то твой вариант буду пытать )

Добавлено через 3 часа, 5 минут и 59 секунд:
уряяя, есть сдвиг )) Заколебался, правда, адаптировать, но тест сразу удачный



переделывать СИшную тряхомундию не буду, сейчас выясню, как он там сжимает данные , да себе этот кусочек кода перенесу

А умеет ли он анимировать - я не знаю даже, не нашёл

* tessst.PNG (14.58 Кб - загружено 1870 раз.)
« Последнее редактирование: 10-09-2011 13:14 от Алексей1153 » Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #46 : 10-09-2011 19:20 » 

прогресс налицо )

файлик сгенерирован программой



ещё есть одна проблемка - начиная с определённого размера формат ломается - грешу на косяк в размещении субблоков кадра. Завтра поразбираюсь )

Всем огромное спасибо за пинки в нужном направлении Отлично

Добавлено через 1 минуту и 44 секунды:
хм, почему-то анимация останавливается в браузере. Сначала играет, а потом - тык

В графпрограмме играет постоянно

* 1234.gif (2.67 Кб - загружено 1967 раз.)
« Последнее редактирование: 10-09-2011 19:21 от Алексей1153 » Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #47 : 10-09-2011 19:27 » 

Цикл включен? Насколько помню, анимация может быть однократной или циклической.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #48 : 10-09-2011 19:39 » 

ещё тестик

добавил модификатор Netscape



Добавлено через 18 секунд:
ага, нормуль )

Добавлено через 2 минуты и 34 секунды:
Цитата
однократной или циклической.

судя по описанию,

значение Loop

0 - бесконечно
1 - два раза
2 - тоже два раза
3 - 3 раза
4 - 4 раза
...
65535 - 65535 раз

* 1234.gif (2.69 Кб - загружено 2427 раз.)
« Последнее редактирование: 10-09-2011 19:42 от Алексей1153 » Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #49 : 10-09-2011 20:17 » 


* 1234.gif (37.32 Кб - загружено 1894 раз.)
Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #50 : 10-09-2011 20:44 » 

Поздравляю!
Так чем ты его осилил?


Кстати из фишек: кадры рендерятся поверх предыдущих - статические компоненты нужны только в первом кадре, а в остальных их можно заменить цветом прозрачности.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #51 : 11-09-2011 00:42 » 

Так чем ты его осилил?
так вот этим ) http://www.solidfluid.co.uk/sfsite.php/000000CF и вот отличная очень подробная дока - там и про фишки эти написано, а как выбирать способ смены кадра, смещать кадр и так далее http://home.onego.ru/~chiezo/gif.htm Там же ссылка на алгоритм сжатия, но у меня по нему не вышло. Собственно, косяк только в нём у меня и был, всё остальное осталось без изменений, а сжатие я взял из первой ссылки (только пришлось попотеть, доставая необходимо минимальное для компиляции). Конечно, это всё костыль - как будет время, изучу алгоритм, который там зашит, да оставлю только его

----------

задание заказчика такое (самое сложное уже сделано Улыбаюсь ):


Необходима dll, написанная на C++ с одной функцией: на входе получить ASCII-строку и номер шрифта, а на выходе отдать картинку в формате анимированного GIF, где на наждом кадре будет написана входая строка черным цветом и каждый белый пиксель кадра должен быть инвертирован случайным образом с вероятностью 10%.
Всего кадров столько, сколько букв во входной строке.
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #52 : 11-09-2011 07:20 » 

Лёш, короче генератор картинок для капчи ему нужен. Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #53 : 11-09-2011 09:11 » 

Тогда рекомендую не рендерить все буквы в одном кадре - слишком легко будет убрать шум. А вообще, это примитивизм для OCR. Если уж делать интереснее, то лучше бы в анимации буквы "плавали" и к ним применялись бы различные анимационные эффекты.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #54 : 11-09-2011 10:02 » 

RXL, что даст анимация в плане защиты от OCR? Достаточно либо взять кадр, либо последовательно сложить несколько кадров или перепробовать серию таких комбинаций, загоняя каждую в OCR.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #55 : 11-09-2011 10:17 » 

Дим, тут играет роль особенность зрения: видео воспринимается глазом намного легче, чем статическая картинка. Т.е. имеем массу плюсов: степень искажения текста может быть больше, в каждом кадре может быть фрагмент целого изображения, элементы изображения могут двигаться. Возможно еще есть возможности затруднить декодирование.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #56 : 11-09-2011 11:31 » 

Лёш, короче генератор картинок для капчи ему нужен. Ага

ну это само собой. Я ещё предлагаю ему опции по разбросу букв )

RXL, да, это всё в процессе доводки сделаем, если нужно будет. Совет я заку дам, а там он сам решит.

Димка правильно говорит - лучше сделать для каждой литеры случайное смещение + небольшой поворот. Для глаза это будет читаемо, а вот распознавалка сдуется



Добавлено через 8 минут и 43 секунды:
кстати, любопытное наблюдение в процессе поиска истины:

сначала я пытался всё сделать сам, активно применяя std::vector для массивов и std::map для индексации. В дебаге генерилось жутко долго,я даже расстроился (а то, что генерилось не то - это пока значения не имело, объём вычислений всё равно похожий), хотя резервирование для векторов я делал тщательно. Но запустил в релизе - работает моментально

Оптимизатор, однако )

А сишный исходник (там нет STL, одни динамические массивы через alloc и free и куча хаков) - ну просто летает даже в дебаге )))  Хотя, там без бидона кефира лучше не соваться, я до знакомства с STL и то прозрачнее всё делал.

« Последнее редактирование: 11-09-2011 11:39 от Алексей1153 » Записан

Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #57 : 11-09-2011 12:05 » 

Offtopic:

Если народ recaptcha ломает... то такую "простую" гифку  не составит труда.
Было бы это кому-то нужно.
Поставлю в угол.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #58 : 11-09-2011 12:18 » 

Sla, заказчик сказал - фрилансер сделал, деньги получил Улыбаюсь
Записан

Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #59 : 11-09-2011 18:10 » 

кстати, любопытное наблюдение в процессе поиска истины:

сначала я пытался всё сделать сам, активно применяя std::vector для массивов и std::map для индексации. В дебаге генерилось жутко долго,я даже расстроился (а то, что генерилось не то - это пока значения не имело, объём вычислений всё равно похожий), хотя резервирование для векторов я делал тщательно. Но запустил в релизе - работает моментально

Оптимизатор, однако )

А сишный исходник (там нет STL, одни динамические массивы через alloc и free и куча хаков) - ну просто летает даже в дебаге )))  Хотя, там без бидона кефира лучше не соваться, я до знакомства с STL и то прозрачнее всё делал.


Алексей1153++, Это особенности студии Улыбаюсь GCC я например такого эффекта практически не наблюдаю. А в студии сталкивался. Внутри студийного кода в Debug режиме очень много ASSERT, выделений и зачистка памяти сверх запрошенного и так далее. И это все очень значительно жрет ресурсов.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Страниц: 1 [2] 3  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines