Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/47: Рейтинг темы: голосов - 47, средняя оценка - 4.79
39 / 39 / 17
Регистрация: 14.10.2013
Сообщений: 174
1

Qt + ImageMagick, создать GIF

12.06.2014, 17:17. Показов 8548. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени дня,
установил ImageMagick, подключил к Qt.
Задача следующая: из массива изображений родить GIF файл.
Изображения рисуются через QPainter и хранятся в памяти как QImage(можно и QPixmap если надо), можно ли этими данными, без сохранения их как файлы на диск, проинициализировать Magick::Image или BLOB, и конвертнуть это все в GIF (первая часть намного проблемнее второй). Очень нехотелось бы постоянно гонять файлы на диск и читать с него в Magick::Image.
Буду признателен любым подсказкам, т.к. help по api IM очень скуден (либо я его не понимаю, либо плохо искал, но честно старался).
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.06.2014, 17:17
Ответы с готовыми решениями:

Как создать gif-изображение?
Привет всем такой вопрос . Нужно сделать гифки на которой будет черный фон а на нем подоть кружки...

Создать GIF из двух PictureBox
Как объединить две картинки из picturebox1 и picturebox2. А после при нажатии кнопки, эти...

Как создать *.GIF файл с анимацией?
Как создать *.GIF файл с анимацией?

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

2
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
12.06.2014, 18:08 2
Не знаю как вы искали, но:
http://www.imagemagick.org/dis... =1&t=12812
http://www.qtforum.org/article... l?ad6ff58e
1
39 / 39 / 17
Регистрация: 14.10.2013
Сообщений: 174
12.06.2014, 21:39  [ТС] 3
Лучший ответ Сообщение было отмечено Asting как решение

Решение

RazrFalcon, Примного благодарен.
Воспользовался следующей функцией для преобразования QImage в Image:
C++
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
Image* MainWindow::toImage(QImage &qimage)
{
qDebug() << "toImage:" << qimage.width() << qimage.height();
 
    Image *newImage = new Image(Magick::Geometry(qimage.width(), qimage.height()), Magick::ColorRGB(0.5, 0.2, 0.3));
 
    double scale = 1 / 256.0;
    newImage->modifyImage();
    Magick::PixelPacket *pixels;
    Magick::ColorRGB mgc;
    for (int y = 0; y < qimage.height(); y++) {
        pixels = newImage->setPixels(0, y, newImage->columns(), 1);
        for (int x = 0; x < qimage.width(); x++) {
            QColor pix = qimage.pixel(x, y);
            //      *pixels++ = Magick::ColorRGB(256 * pix.red(), 256 * pix.green(), 256 * pix.blue());
            mgc.red(scale *pix.red());
            mgc.green(scale *pix.green());
            mgc.blue(scale *pix.blue());
            //      *pixels++ = Magick::ColorRGB(scale *pix.red(), scale * pix.green(), scale * pix.blue());
            *pixels++ = mgc;
        }
        newImage->syncPixels();
    }
 
    return newImage;
}
А так же нашел более понятный файл описывающий работу с API для С++: http://www.imagemagick.org/Mag... torial.pdf
Но к сожалению как создать GIF анимацию из нескольки Image-в он не описывает(( Ищу дальше

Добавлено через 2 часа 29 минут
И так решение для "GIF из Images" следующее:
1. создаем list<Image>;
2. если нужно конвертим QImage в Image по методу в выше, либо инициализируем из файла. Для каждого Image ставим Image::animationDelay(size_t (0 to 65535)) в размерности 1/100 sec; остальные фильтры по желанию;
3. Добавляем Image в список list<Image>. смотрим на следующий кадр/возвращаемся на пункт 2 - для всех картинок;
4. writeImages(InputIterator first_, InputIterator last_, const std::string &imageSpec_, bool adjoin_ = true). В моем случа для всего списка было: writeImages(listImg.begin(), listImg.end(), "readyGIF.gif");

По следующей ссылке описание классов IM: https://www.informatik.uni-ham... ation.html
0
12.06.2014, 21:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.06.2014, 21:39
Помогаю со студенческими работами здесь

Чтение файла GIF. Перевод текста в HEX. Декодирование GIF анимации
Всем привет.. задача такая: Необходимо открыть файл GIF.. Например, как в этой статье про...

ImageMagick
Всем доброго утра\дня\вечера\ночи :) Сразу к делу, ибо достал меня этот PerlMagick :wall: ...

Методы из ImageMagick
Добрый вечер. На днях открыл для себя ImageMagick. Оказалось, что код (+функционал) будут получше...

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru