控制台程序使用GDI+
来源:互联网 发布:解除windows驱动器锁定 编辑:程序博客网 时间:2024/06/13 15:23
由于需要得到图片的宽、高以及所占的字节数大小,所以上网百度了一下,发现GDI+可以很简单的满足我的功能。以下结合自己的程序,介绍下GDI+的使用方法。
1、包含GDI+的头文件、库文件以及命名空间
1包含GDI+的头文件、库文件以及命名空间#define ULONG_PTR unsigned long#include <Gdiplus.h>using namespace Gdiplus;#pragma comment(lib, "gdiplus.lib")
2、GDI+程序的初始化
1GDI+程序的初始化:GdiplusStartupInput gdiplusStartupinput;ULONG_PTR gdiplusToken;GdiplusStartup(&gdiplusToken,&gdiplusStartupinput,NULL);
........................................................................
.......................自己程序的代码....................
3、GDI+结束使用时要对其进行关闭
3GDI+结束使用时要对其进行关闭:GdiplusShutdown(gdiplusToken);
自己程序代码简单实例:
4自己简单代码实例:BOOL ZZC_Func(char *strFileNameS,char*strFileNameD){FILE *fp=NULL;int nWidth,nHeight;TCHAR *WidestrFileNameS=new TCHAR[256];MultiByteToWideChar(CP_ACP,NULL,strFileNameS,-1,WidestrFileNameS,256);Image * pImage = Image::FromFile(WidestrFileNameS);if(pImage){nWidth = pImage->GetWidth();nHeight = pImage->GetHeight();}int nSize=0;BYTE *Buffer;fopen_s(&fp,strFileNameS,"rb");if (fp){nSize=filelength(fileno(fp));Buffer=new BYTE[nSize*24];fread(Buffer,nSize,1,fp);fclose(fp);fp=NULL;}EncodeJPG(strFileNameS,strFileNameD,Buffer,nSize,0,3,nWidth,nHeight);if (Buffer!=NULL){delete []Buffer;}if (WidestrFileNameS!=NULL){delete []WidestrFileNameS;}return TRUE;}
1BOOL EncodeJPG(char * strFileNameS,char *strFileNameD,unsigned char * pData,int nSize,int nByteAdjust,int nComponents,int nImageWidth,int nImageHeight){try{char *outdata = new char[10000000];BYTE *pPallete=NULL;int nSizeJpg = 0;struct jpeg_compress_struct jcs;struct jpeg_error_mgr jem;jcs.err = jpeg_std_error(&jem);jpeg_create_compress(&jcs);jpeg_stdio_dest(&jcs, outdata,&nSizeJpg);jcs.image_width = nImageWidth; jcs.image_height = nImageHeight;jcs.input_components = nComponents;if (nComponents==1){jcs.in_color_space = JCS_GRAYSCALE;}else{ jcs.in_color_space = JCS_RGB;}jpeg_set_defaults(&jcs);jpeg_set_quality (&jcs, 80, true);jpeg_start_compress(&jcs, TRUE);JSAMPROW row_pointer[1];int row_stride;row_stride = jcs.image_width*nComponents;while (jcs.next_scanline < jcs.image_height) {row_pointer[0] =(BYTE *) & pData[jcs.next_scanline * (row_stride/*+nByteAdjust*/)];jpeg_write_scanlines(&jcs, row_pointer, 1);}jpeg_finish_compress(&jcs);jpeg_destroy_compress(&jcs);FILE *f=NULL;fopen_s(&f,strFileNameD,"wb");if (f){fwrite(outdata,nSizeJpg,1,f);fclose(f);}delete [] outdata;return TRUE;}catch(...){return FALSE;}}
0 0
- 控制台程序使用GDI+
- gdi控制台小程序
- VC++ 6.0 控制台程序使用GDI+的方法
- Win32程序使用GDI+
- MFC程序使用控制台
- MFC程序使用控制台
- VC++控制台应用程序下使用GDI在内存中画图
- GDI实现控制台绘图
- windows控制台程序使用TIMER
- 控制台程序使用mfc类
- 图形界面程序使用控制台窗口
- 控制台程序中使用定时器
- 控制台程序中使用CString
- GDI&GDI+程序入门
- 在非控制台程序中使用控制台来调试程序。
- 在程序中使用GDI+的步骤
- 在控制台程序中不能使用CAsyncSocket
- 控制台程序如何使用DOS命令
- C++语言学习指导
- TensorFlow人工智能引擎入门教程之二 CNN卷积神经网络的基本定义理解。
- VMware Fedora固定IP直连路由器
- Linux 技巧:让进程在后台可靠运行的几种方法
- java面试题(五)
- 控制台程序使用GDI+
- Git使用教程
- [MTK] 解决预置支付有关APK打开提示权限问题
- java二分查找详解
- SQL基础(1):数据定义
- Android使用本地Service实现后台播放音乐
- linux-----遇到的问题----tab键不补全sh文件不能运行
- JSTL SQL 标签库
- JavaBean的定义规范和原因