magick++ 把图片合成gif文件,并设置每张图片的延时时间

#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;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值