GDIplus SaveAdd Win32Error

sea_sharka_17 2007-11-29 09:32:04
我想把多个单张图片合成一个gif
代码:

parameterValue = EncoderValueMultiFrame;
SRet = image->Save(L"c:\\3.gif", &encoderClsid, &encoderParameters);

parameterValue = EncoderValueFrameDimensionTime;
SRet = image->SaveAdd(image1, &encoderParameters);

但为什么程序总再 SaveAdd 时出 Win32Error 的错误,请指点一下,谢谢
...全文
399 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
an_bachelor 2007-12-06
  • 打赏
  • 举报
回复
http://www.aspxboy.com/private/5423/default.aspx
iyranly 2007-12-05
  • 打赏
  • 举报
回复
解决了吗?
sea_sharka_17 2007-11-29
  • 打赏
  • 举报
回复
先谢谢楼上的
我想生成gif的文件,tiff的文件方式我已经试过了是可以的
iyranly 2007-11-29
  • 打赏
  • 举报
回复

#include <windows.h>
#include <gdiplus.h>
#include <stdio.h>
using namespace Gdiplus;

INT GetEncoderClsid(const WCHAR* format, CLSID* pClsid); // helper function

INT main()
{
// Initialize GDI+.
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

EncoderParameters encoderParameters;
ULONG parameterValue;
Status stat;

// An EncoderParameters object has an array of
// EncoderParameter objects. In this case, there is only
// one EncoderParameter object in the array.
encoderParameters.Count = 1;

// Initialize the one EncoderParameter object.
encoderParameters.Parameter[0].Guid = EncoderSaveFlag;
encoderParameters.Parameter[0].Type = EncoderParameterValueTypeLong;
encoderParameters.Parameter[0].NumberOfValues = 1;
encoderParameters.Parameter[0].Value = ¶meterValue;

// Get the CLSID of the TIFF encoder.
CLSID encoderClsid;
GetEncoderClsid(L"image/tiff", &encoderClsid);

// Create four image objects.
Image* multi = new Image(L"Shapes.bmp");
Image* page2 = new Image(L"Cereal.gif");
Image* page3 = new Image(L"Iron.jpg");
Image* page4 = new Image(L"House.png");

// Save the first page (frame).
parameterValue = EncoderValueMultiFrame;
stat = multi->Save(L"MultiFrame.tif", &encoderClsid, &encoderParameters);
if(stat == Ok)
printf("Page 1 saved successfully.\n");

// Save the second page (frame).
parameterValue = EncoderValueFrameDimensionPage;
stat = multi->SaveAdd(page2, &encoderParameters);
if(stat == Ok)
printf("Page 2 saved successfully.\n");

// Save the third page (frame).
parameterValue = EncoderValueFrameDimensionPage;
stat = multi->SaveAdd(page3, &encoderParameters);
if(stat == Ok)
printf("Page 3 saved successfully.\n");

// Save the fourth page (frame).
parameterValue = EncoderValueFrameDimensionPage;
stat = multi->SaveAdd(page4, &encoderParameters);
if(stat == Ok)
printf("Page 4 saved successfully.\n");

// Close the multiframe file.
parameterValue = EncoderValueFlush;
stat = multi->SaveAdd(&encoderParameters);
if(stat == Ok)
printf("File closed successfully.\n");

delete multi;
delete page2;
delete page3;
delete page4;
GdiplusShutdown(gdiplusToken);
return 0;
}


Check it! regards

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧