Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как программно разбить GIF на кадры? Посоветуйте библиотеку... 
V
    Опции темы
Tiffany
  Дата 1.8.2012, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 23.12.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Задачка на первый взгляд проста: взять gif-анимацию, разбить на картинки и сохранить их все по отдельности. Никак не могу подобрать библиотеку. Нашла информацию об ImageMagick, даже кое-как собрала.. Но возникли проблемы с подключением. 
Чем сейчас вообще пользуются для такого рода задач?
Пишу в 10 студии. Желательно кроссплатформенную. 
PM MAIL   Вверх
magesi
Дата 1.8.2012, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 20.5.2012

Репутация: -4
Всего: -4



GIF использует LZW алгоритм, значит Вам нужно знать, как самим имплементировать этот алгоритм или искать либу, которая работает с LZW, также Вам следует прочитать соответствующий стандарт почитать, какая структура у ГИФа, у каждого ее кадра и как вообще происходит работа анимации ГИФа.

http://www.w3.org/Graphics/GIF/spec-gif89a.txt

ГИФ состоит из таблицы цветов, сам формат файла учить надо ( с какого бита идет инфа о LZW, а с какого сам raw ), а так же есть там табличка
Graphic Control Extension, которая отвечает за то, как должна работать анимация.

Так, что либо учите стандарт, либо ищите либы , которых на CodePlex, SourceForge - море.

Но , юзание либ освобождает от знаний в виду всяких готовы методов...



Это сообщение отредактировал(а) magesi - 1.8.2012, 15:22
PM MAIL   Вверх
borisbn
Дата 1.8.2012, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



QMovie
Код
QMovie m( "filename.gif" );
int frameCount = m.frameCount();
for ( int i = 0; i < frameCount; i++ ) {
    m.jumpToNextFrame();
    QPixmap p = m.currentPixmap();
    p.save( QString( "frame %1" ).arg( i ) );
}



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
magesi
Дата 1.8.2012, 23:03 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 20.5.2012

Репутация: -4
Всего: -4



borisbn, куйня прикладная эти Ваши либы  smile кайфа ни какого от разработки )

в стиле

*УЙНЯ объект = new *УЙНИ()
объект.играть<ГИФ>(файл);

и весь прикладной мир в таком стиле )
PM MAIL   Вверх
borisbn
Дата 1.8.2012, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



magesi, сдаюсь.
Код

memcpy( (void*)(unsigned long long *)(& (ptr + 143 * sizeof(char) ) ), (char*)(unsigned long*)(& ptr[ 99 ] ), count * sizeof( ptr[0] ) / sizeof( ppp[ 0 ] ) * sizeof( char ) );
unsigned char * p = (unsigned char *)( &( struct_ptr++ ) );
*p++ = 0;

это - существенно проще и понятней  smile 


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
magesi
Дата 1.8.2012, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 20.5.2012

Репутация: -4
Всего: -4



borisbn, это достаточно понятно вообще-то ) лучше бы на haskell привел бы аналог  smile 

Это сообщение отредактировал(а) magesi - 1.8.2012, 23:55
PM MAIL   Вверх
Earnest
Дата 2.8.2012, 06:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



magesi,  smile 
Но ты не совсем прав. Если тебе эта *УЙНЯ нужна как бантик на окне, то тратить время на его разбор вместо просто new ; Play и глупо, и кайфа никакого. Так можно год потратить на точение разнообразных лопат, и совершенно забыть, что нужно это было всего лишь для того, чтобы пользователю не скучно было ждать пока идет твоя супер-мега обработка. 


--------------------
...
PM   Вверх
Tiffany
Дата 2.8.2012, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 23.12.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Шутники smile
Спасибо за ваши идеи, а я вот еще кое-что нашла. Правда, на С#.

http://www.codeproject.com/Articles/11505/...Encoder-for-NET

Earnest права, как раз хотелось бы избежать разбора формата и прочих премудростей.
ImageMagick++ предлагает простой метод
Код

    readImages(&imageList, "picture.gif" );

, но никак не хочет внедряться, видимо из-за кривизны рук. А вот было бы здорово найти аналогичный метод разбиения. 

Это сообщение отредактировал(а) Tiffany - 2.8.2012, 10:56
PM MAIL   Вверх
borisbn
Дата 2.8.2012, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Цитата(Tiffany @  2.8.2012,  10:45 Найти цитируемый пост)
Earnest прав

права  smile 


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Tiffany
Дата 2.8.2012, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 23.12.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Упс  smile 
Исправилась!
PM MAIL   Вверх
SVN74
Дата 3.8.2012, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

Репутация: 1
Всего: 18



Модератор: 
Часть текста удалена как продолжение вырезанного срача

Добавлено @ 21:12
Tiffany
А Вы какую IDE используете?
PM MAIL WWW   Вверх
SVN74
Дата 3.8.2012, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

Репутация: 1
Всего: 18



Цитата(borisbn @  3.8.2012,  21:29 Найти цитируемый пост)
не уловил... а как это поможет в помощи ТС с её проблемой?

Если Builder? - есть уже готовая библиотечка, там есть и доступ к кадрам...
PM MAIL WWW   Вверх
borisbn
Дата 3.8.2012, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Цитата(SVN74 @  3.8.2012,  21:33 Найти цитируемый пост)
Если Builder? - есть уже готовая библиотечка, 

аааа. ясно. в принципе, я тоже советовал фреймворкозависимое - КуТю...


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Amp
Дата 4.8.2012, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 3
Всего: 17



Emacs + latex smile
PM MAIL   Вверх
Tiffany
Дата 5.8.2012, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 23.12.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



SVN74
Цитата(Tiffany @  1.8.2012,  14:08 Найти цитируемый пост)
Пишу в 10 студии. Желательно кроссплатформенную. 

 smile 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0786 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.