将多个png合并成gif动图实践

这里用到一个库 gif.h下载地址https://github.com/charlietangora/gif-h

使用这个库来生成gif挺简单的,下载解压缩后,将gif.h添加到工程

这里是用QImage加载完图片后,用gif.h将取得的QImages.bits数据写入到文件中

主要实现代码如下:

#include <gif.h>
...
void TestWidget::on_pushButton_clicked()
{     
    
    QPixmap pix1=QPixmap("./res/1.png") ;
    QImage image1 = pix1.toImage().convertToFormat( QImage::Format_RGB32);
    QPixmap pix2=QPixmap("./res/2.png") ;
    QImage image2 = pix2.toImage().convertToFormat(QImage::Format_RGB32);
    QPixmap pix3=QPixmap("./res/3.png") ;
    QImage image3 = pix3.toImage().convertToFormat(QImage::Format_RGB32);
    
    const char* filename = "./testGif.gif";
    int w=100;
    int h=100;
    
    GifWriter writer = {};
    GifBegin( &writer, filename, w, h, 2, 8, true );
    for( int frame=0; frame<10; ++frame ){
        GifWriteFrame( &writer, image1.bits(), w, h, 2, 8, true );
    }
    for( int frame=0; frame<10; ++frame ){
        GifWriteFrame( &writer, image2.bits(),w, h, 2, 8, true );
    }
    for( int frame=0; frame<10; ++frame ){
        GifWriteFrame( &writer, image3.bits(),w, h, 2, 8, true );
    } 
    
    GifEnd( &writer );    
    
}

素材

将多个png合并成gif动图实践_合成gif将多个png合并成gif动图实践_合成gif_02将多个png合并成gif动图实践_gif_03

合成效果

将多个png合并成gif动图实践_合成gif_04