С Новым годом! Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/30: Рейтинг темы: голосов - 30, средняя оценка - 5.00
 Аватар для igor_petrov
18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164

Создать Gif-анимацию из картинок .png

21.06.2014, 18:33. Показов 6344. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть несколько png картинок, которые я сохраняю на диск с помощью Gdi+ Save(), нужно создать из них один анимационный Gif-файл.

Много читал про формат gif89a, но это все на низком уровне и изучение/написание займет много времени. Сроки горят, поэтому ищу способы сделать это с помощью функций той же Gdi+ или какой-нибудь другой библиотеки.

Нашел инфу, что с помощью Gdi+ нельзя сохранять Gif с поддержой многокадровости
http://www.rsdn.ru/article/gdi... .xml#EMLAC

Есть идеи? Может быть этим кто-то занимался, что можете посоветовать?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.06.2014, 18:33
Ответы с готовыми решениями:

Создать анимацию из картинок
Добрый вечер всем...:friends: У меня есть 19 картинок... Хочу создать анимацию из них, чтобы поместить на главную страницу сайта... Хочу...

Какое расширение выбрать JPG/GIF/PNG-8/PNG-24
Применение их

С++ gif анимацию не поддерживает да ?
С++ gif анимацию не поддерживает ?

12
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
21.06.2014, 20:08
ImageMagick, например. Можно прямо так из командной строки использовать, можно через API.
http://www.imagemagick.org/
http://www.imagemagick.org/script/convert.php
http://www.imagemagick.org/Magick++/
1
 Аватар для igor_petrov
18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164
22.06.2014, 07:16  [ТС]
Somebody, спасибо посмотрим)

Добавлено через 55 минут
Somebody, а не подскажите, какая именно команда соединит много картинок в gif, потому что я не могу найти никак, читаю уже долго.

Вроде adjoin и combine это немножечко не "то", что мне нужно.

Добавлено через 5 часов 30 минут
Я ошибся, именно команда

"convert -adjoin img1.gif img2.gif result.gif" то, что нужно!

Только теперь вопрос, как вызвать эту команду не через командную строку, а через свое приложение
Никак не могу найти
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
22.06.2014, 13:46
Лучший ответ Сообщение было отмечено igor_petrov как решение

Решение

Цитата Сообщение от igor_petrov Посмотреть сообщение
Только теперь вопрос, как вызвать эту команду не через командную строку, а через свое приложение
В смысле просто запустить этот convert? Что-то из std::system/ShellExecute/CreateProcess.
А если на входе тоже gif, то есть ещё gifsicle.
1
 Аватар для igor_petrov
18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164
22.06.2014, 18:17  [ТС]
А все, тупанул
думал есть способ как типо функцией сделать вызов

Спасибо за помощь! Очень помогли!
0
0 / 0 / 0
Регистрация: 24.04.2014
Сообщений: 2
17.11.2014, 13:13
igor_petrov, чем пользовался в итоге? Сейчас такой же вопрос, как получить из набора bmp gif или video.
0
 Аватар для igor_petrov
18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164
18.11.2014, 13:21  [ТС]
qrv, это было давно, но по-моему, я из своей программы вызывал ShellExecute(), использовал Magick++
0
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
21.11.2014, 06:57
Вот код
http://msdn.microsoft.com/en-u... s.85).aspx
0
 Аватар для igor_petrov
18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164
15.12.2014, 18:06  [ТС]
demmax2004, не помню почему, но я отбросил этот вариант. если не ошибаюсь, там поддерживается только формат tiff или что-то такое. поэтому работал средствами magick из консоли, как описал выше
0
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
15.12.2014, 20:37
Цитата Сообщение от igor_petrov Посмотреть сообщение
если не ошибаюсь, там поддерживается только формат tiff
Дык класс энкодера нужно задавать, а не тупо копировать отключая мозг
0
0 / 0 / 0
Регистрация: 24.04.2018
Сообщений: 14
28.04.2018, 16:13
Имея 10 файлов, например (файл1.png, файл2.png, ..., файл10.png)
можно использовать, например тот же Magick++ но как-то не заметно для пользователя склеить их в один, например GIF ?
Буду благодарен за пример или тыкните, куда копать

Добавлено через 35 минут
как прикрутить это к Билдеру ?

Добавлено через 1 час 54 минуты
на прсторах сети нашел такую штуку

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TGIFImage *gif = new TGIFImage;
 
TPNGObject *png1 = new TPNGObject;
TPNGObject *png2 = new TPNGObject;
TPNGObject *png3 = new TPNGObject;
...
TPNGObject *png10 = new TPNGObject;
 
 
png1->LoadFromFile("scan1.png");
png2->LoadFromFile("scan2.png");
png3->LoadFromFile("scan3.png");
...
png10->LoadFromFile("scan10.png");
 
// значения от 0 до 1000
gif->AnimationSpeed=1000;
 
gif->Add(png1);
gif->Add(png2);
gif->Add(png3);
...
gif->Add(png10);
 
gif->SaveToFile("GIF.gif");
как замедлить скорость анимации, сильно быстро
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
28.04.2018, 17:15
Уменьшить AnimationSpeed, это свойство задает скорость воспроизведения в процентах от нормальной скорости. Попробуй начать со 100, потом посмотри, в какую сторону изменять.
1
0 / 0 / 0
Регистрация: 24.04.2018
Сообщений: 14
28.04.2018, 20:59
Помогло. Теперь другая проблема.

Создаю скриншот экрана, например каждые 5 сек. Засунул в таймер все работает.
Теперь у меня 12 файлов каждую минуту и 720 за час.
Пытаюсь склеить в gif, компьютеру очень тяжко. Как бы это оптимизировать? Склеивать по немного?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.04.2018, 20:59
Помогаю со студенческими работами здесь

Коммерч. конвертер gif->png
Видал кто-нибудь такое? Чтоб мог работать в пакетном режиме, вызываться как библиотека...

Delphi and image | gif. png.
Пипл подскажите как в делфи можно добавить компоненту image с прозрачным фоном!

Воспроизвести gif анимацию на форме
есть задача к дню победы сделать танк который по нажатиям на клавиши стрелки вправо, влево передвигаеться (Сделал) а при нажатие...

Как отобразить gif-анимацию?
Подскажите пожалуйста как на Delphi самым простым способом запустить gif картинку(анимационную)

Как поставить GIF-анимацию?
Как поставить gif анимациу на delphi


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru