控制台程序使用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
原创粉丝点击