关于GDI+产生OutOfMemory问题及GDI+用法概要

本文讲述了作者在使用GDI+处理图片时遇到的OutOfMemory问题,以及解决问题的过程。通过配置VS项目和初始化GDI+,作者发现错误源于图片路径设置不当,而非真正的内存不足。提供了一个简单的GDI+图片加载示例,强调了VS工程中文件路径的注意事项。
摘要由CSDN通过智能技术生成

最近学校作业要处理图片,本来是要使用openCV的,但之前一直学的win32编程(mfc不习惯)(一直看的比较老的那本经典的《Windows程序设计》Charles Petzold著),并且对API的要求只是打开图片,给我像素矩阵就行,剩下 的要自己写,windows自带的API应该能搞定吧,之前也学过GDI,但都是画线什么的,顶多是打开BMP图片,而我要处理的有jpg格式的,就在网上搜吧,果然有GDI+,支持这种格式,那就开始吧。

中间的过程废话就不说了,走过不少弯路。

首先需要进行配置,看了网上的教程,有VC6.0和VS的,之前一直在用VC6.0,但VC6出的时候GDI+还没有出生的,GDI+还是在VC7的时候(不知道对不对,没见过这个版本)配置较麻烦,看到还需要下载用到的dll跟文件,作业还催着的,那我就换用VS吧,反正感觉又差不了多少。感觉最简单的一种方法就是直接在程序开始加上这几句。

程序中每句话的作用就不具体解释了,光捡重要的说吧,各位有兴趣可以自己查,这个简单多了。

#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib")

然后就可以正常使用GDI+了。

但还有一项十分重要的工作,那就是初始化GDI+,代码如下:

   GdiplusStartupInput gdiplusStartupInput;
   ULONG_PTR gdiplusToken;
   GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

然后在程序结束之前,需要关闭GDI+,使用下面的语句

   GdiplusShutdown(gdiplusToken);

下面讲到重点了:这一切做完之后,按理应该做自己想做的了,但只要一打开图片,获取得到 的状态就是OutOfMemory。

   Image* image = new Image(L"2.jpg");
   Status st = image->GetLastStatus();<
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值