用qt写了个小程序,将gif中的每一帧导出成jpg、png、bmp。
主要使用QMovie这个类。
gif图如下:
软件界面如下:
软件有如下功能:
可查看gif,可选择自适应显示或原图大小显示,可拖动gif到软件界面并显示,可幻灯片播放gif,可左右键切换上一张,下一张gif图,可导出当前gif文件中的每一帧并另存到指定文件夹
导出png如下:
核心代码如下:
QMovie *movie = new QMovie();
movie->setFileName(strFile);
movie->setCacheMode(QMovie::CacheAll);
if(movie!=nullptr)
{
QString strFileName = QFileDialog::getSaveFileName(this,tr("Gif To Picture"),"","JPG(*.jpg);;PNG(*.png);;BMP(*.bmp)");
if(!strFileName.isNull())
{
int nNum = movie->frameCount();
for(int i =0;i<nNum;i++)
{
QString strNum = QString("%1").arg(i,4,10,QLatin1Char('0'));//0001保留4位数字,i之前自动补零
int nLen = strFileName.length()-strFileName.lastIndexOf('.')-1;
QString strName = strFileName.left(strFileName.lastIndexOf('.'));
QString strSuffix = strFileName.right(nLen);//截取‘.’符号后面的字符串,这是为了获取文件后缀名
QString strName0 = strName+strNum+"."+strSuffix;
movie->jumpToFrame(i);
QImage img= movie->currentImage();
img.save(strName0,strSuffix.toUpper().toUtf8());
}
}
}
源码下载:
https://download.youkuaiyun.com/download/weixin_43935474/86837486