Image::Save保存图片后,为什么保存后的图片大小为0Kb?

清水迎朝阳
博客专家认证
2009-10-21 01:59:58
以下是代码
vc++6.0

image.Save(L"e:\\I_image.tif",&ImageFormatTIFF);

是不是这样用不正确? 正确的用法如何
...全文
577 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
togoblime 2009-12-06
  • 打赏
  • 举报
回复
#include <gdiplus.h>

#pragma comment(lib, "gdiplus.lib")

using namespace Gdiplus;

int GetEncoderClsid(const WCHAR* format, CLSID* pClsid)
{
UINT num = 0; // number of image encoders
UINT size = 0; // size of the image encoder array in bytes

ImageCodecInfo* pImageCodecInfo = NULL;

GetImageEncodersSize(&num, &size);
if(size == 0)
return -1; // Failure

pImageCodecInfo = (ImageCodecInfo*)(malloc(size));
if(pImageCodecInfo == NULL)
return -1; // Failure

GetImageEncoders(num, size, pImageCodecInfo);

for(UINT j = 0; j < num; ++j)
{
if( wcscmp(pImageCodecInfo[j].MimeType, format) == 0 )
{
*pClsid = pImageCodecInfo[j].Clsid;
free(pImageCodecInfo);
return j; // Success
}
}

free(pImageCodecInfo);
return -1; // Failure
}

//传入窗口句柄获取其DC来绘图
VOID SaveImage(HWND hwnd)
{
// Initialize GDI+.
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

{
HDC hdc = ::GetDC(hwnd);
Graphics graphics(hdc);

// Create an Image object based on a PNG file.
Image image(L"E:\\Mosaic.jpg");

// Draw the image.
graphics.DrawImage(&image, 10, 10);

// Construct a Graphics object based on the image.
Graphics imageGraphics(&image);

// Alter the image.
SolidBrush brush(Color(255, 0, 0, 255));
imageGraphics.FillEllipse(&brush, 20, 30, 80, 50);

// Draw the altered image.
graphics.DrawImage(&image, 200, 10);

// Save the altered image.
CLSID tifClsid;
GetEncoderClsid(L"image/tiff", &tifClsid);
image.Save(L"E:\\Mosaic2.tif", &tifClsid, NULL);
}

GdiplusShutdown(gdiplusToken);
}
fandh 2009-12-05
  • 打赏
  • 举报
回复
gdi+?
你没有初始化吧!

19,468

社区成员

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

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