#include "Magick++.h"
#include <iostream>
#include <string>
#include <vector>
#include "Utils.h"
////保存每一帧的图片信息
//struct ImageInfo
//{
// uint32_t delayTime;//延时时间,单位ms
// uint16_t quality;//图片压缩质量
// wchar_t filePath[_MAX_PATH];//文件全路径
// bool isDelete;//是否剔除
//};
using namespace std;
using namespace Magick;
int main(int argc , char* argv[])
{
//添加magick
Magick::InitializeMagick(NULL);
//使用多张图片,设置每张图片的时间,来生成gif图片
std::vector<std::wstring> fileList;
std::wstring file1 = L"F:\\imagemagick\\恐龙\\dest-0.jpg";
std::wstring file2 = L"F:\\imagemagick\\恐龙\\dest-1.jpg";
std::wstring file3 = L"F:\\imagemagick\\恐龙\\dest-2.jpg";
std::wstring file4 = L"F:\\imagemagick\\恐龙\\dest-3.jpg";
std::wstring file5 = L"F:\\imagemagick\\恐龙\\dest-4.jpg";
std::wstring file6 = L"F:\\imagemagick\\恐龙\\dest-5.jpg";
std::wstring file7 = L"F:\\imagemagick\\恐龙\\dest-6.jpg";
std::wstring file8 = L"F:\\imagemagick\\恐龙\\dest-7.jpg";
std::wstring file9 = L"F:\\imagemagick\\恐龙\\dest-8.jpg";
std::wstring file10 = L"F:\\imagemagick\\恐龙\\dest-9.jpg";
std::wstring file11 = L"F:\\imagemagick\\恐龙\\dest-10.jpg";
std::wstring file12 = L"F:\\imagemagick\\恐龙\\dest-11.jpg";
std::wstring file13 = L"F:\\imagemagick\\恐龙\\dest-12.jpg";
std::wstring file14 = L"F:\\imagemagick\\恐龙\\dest-13.jpg";
std::wstring file15 = L"F:\\imagemagick\\恐龙\\dest-14.jpg";
std::wstring file16 = L"F:\\imagemagick\\恐龙\\dest-15.jpg";
std::wstring file17 = L"F:\\imagemagick\\恐龙\\dest-16.jpg";
fileList.push_back(file1);
fileList.push_back(file2);
fileList.push_back(file3);
fileList.push_back(file4);
fileList.push_back(file5);
fileList.push_back(file6);
fileList.push_back(file7);
fileList.push_back(file8);
fileList.push_back(file9);
fileList.push_back(file10);
fileList.push_back(file11);
fileList.push_back(file12);
fileList.push_back(file13);
fileList.push_back(file14);
fileList.push_back(file15);
fileList.push_back(file16);
fileList.push_back(file17);
try
{
std::vector<Magick::Image> lstImages;
/*for (auto strImg : fileList)
{
Magick::Image img;
img.read(CUtils::Unicode_To_Utf8(strImg));
img.animationDelay(5);
img.quality(75);
lstImages.push_back(img);
}*/
Magick::Image img;
img.read(CUtils::Unicode_To_Utf8(file1));
img.quality(50);//压缩图片
std::wstring outFile = L"F:\\imagemagick\\恐龙\\temp.jpg";//奇怪必须存储之后重新获取,gif才压缩了
img.write(CUtils::Unicode_To_Utf8(outFile));
img.read(CUtils::Unicode_To_Utf8(outFile));
img.animationDelay(500);
lstImages.push_back(img);
img.read(CUtils::Unicode_To_Utf8(file4));
img.animationDelay(50);
img.quality(50);
lstImages.push_back(img);
img.read(CUtils::Unicode_To_Utf8(file5));
img.animationDelay(50);
img.quality(50);
lstImages.push_back(img);
img.read(CUtils::Unicode_To_Utf8(file9));
img.animationDelay(5);
img.quality(50);
lstImages.push_back(img);
std::wstring outPath = L"F:\\imagemagick\\恐龙\\dest2.gif";
Magick::writeImages(lstImages.begin(), lstImages.end(), CUtils::Unicode_To_Utf8(outPath));
}
catch (Exception &error)
{
cout << "Caught exception: " << error.what() << endl;
return 1;
}
//从视频生成gif,需要设置尺寸,持续时间,帧率
//gif图片压缩
return 0;
}
magick++ 把图片合成gif文件,并设置每张图片的延时时间
猜你喜欢
转载自blog.csdn.net/qq_24127015/article/details/86544456
今日推荐
周排行