1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/xiaozhuai-GifEncoder

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

GifEncoder

C++ gif кодировщик с хорошим качеством!

Используйте алгоритм квантизации Neural-Net от Энтони Деккера для генерации цветовой карты.

Для кодирования gif используйте giflib.

В демонстрационном коде для загрузки изображений используйте stb_image.

linux macos windows-x64 windows-x86

Использование

Просто скопируйте каталог gif в свой проект и включите GifEncoder.h, это всё.

#include "GifEncoder.h"

int main() {
    // Предположим, что у вас есть три кадра для кодирования
    const int w = 40;
    const int h = 40;
    uint32_t frame0[w * h];
    uint32_t frame1[w * h];
    uint32_t frame2[w * h];
    for (int i = 0; i < w * h; ++i) {
        frame0[i] = 0xFF0000FF; // красный
        frame1[i] = 0xFF00FF00; // зелёный
        frame2[i] = 0xFFFF0000; // синий
    }

    int quality = 10;
    bool useGlobalColorMap = true;
    int loop = 0;
    int preAllocSize = useGlobalColorMap ? w * h * 3 * 3 : w * h * 3;
    int delay = 20;

    GifEncoder gifEncoder;

    if (!gifEncoder.open("test.gif", w, h, quality, useGlobalColorMap, loop, preAllocSize)) {
        fprintf(stderr, "Error open gif file\n");
        return 1;
    }

    gifEncoder.push(GifEncoder::PIXEL_FORMAT_RGBA, (uint8_t *) frame0, w, h, delay);
    gifEncoder.push(GifEncoder::PIXEL_FORMAT_RGBA, (uint8_t *) frame1, w, h, delay);
    gifEncoder.push(GifEncoder::PIXEL_FORMAT_RGBA, (uint8_t *) frame2, w, h, delay);

    if (!gifEncoder.close()) {
        fprintf(stderr, "Error close gif file\n");
        return 1;
    }
}

Более сложный демонстрационный код находится в demo.cpp.

Сборка

Используйте cmake для сборки demo.

Linux или MacOS

cmake -DCMAKE_BUILD_TYPE=Release -B build .
cmake --build build -- all
./build/egif_demo

Windows

Откройте командную строку Visual Studio и выполните следующие команды:

cmake -DCMAKE_BUILD_TYPE=Release -G "NMake Makefiles" -B build .
cmake --build build -- all
.\build\egif_demo.exe

Android & iOS

Соберите самостоятельно.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Гиф-кодер на C++ с хорошим качеством! Используйте алгоритм квантизации Neural-Net Энтони Деккера для создания цветовой карты. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/xiaozhuai-GifEncoder.git
git@gitlife.ru:oschina-mirror/xiaozhuai-GifEncoder.git
oschina-mirror
xiaozhuai-GifEncoder
xiaozhuai-GifEncoder
master