⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ximaenc.cpp

📁 It s a tool designed to extract as much information as possible from Bluetooth devices without the r
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// xImaCodec.cpp : Encode Decode functions/* 07/08/2001 v1.00 - Davide Pizzolato - www.xdp.it * CxImage version 5.99c 17/Oct/2004 */#include "ximage.h"#if CXIMAGE_SUPPORT_JPG#include "ximajpg.h"#endif#if CXIMAGE_SUPPORT_GIF#include "ximagif.h"#endif#if CXIMAGE_SUPPORT_PNG#include "ximapng.h"#endif#if CXIMAGE_SUPPORT_MNG#include "ximamng.h"#endif#if CXIMAGE_SUPPORT_BMP#include "ximabmp.h"#endif#if CXIMAGE_SUPPORT_ICO#include "ximaico.h"#endif#if CXIMAGE_SUPPORT_TIF#include "ximatif.h"#endif#if CXIMAGE_SUPPORT_TGA#include "ximatga.h"#endif#if CXIMAGE_SUPPORT_PCX#include "ximapcx.h"#endif#if CXIMAGE_SUPPORT_WBMP#include "ximawbmp.h"#endif#if CXIMAGE_SUPPORT_WMF#include "ximawmf.h" // <vho> - WMF/EMF support#endif#if CXIMAGE_SUPPORT_J2K#include "ximaj2k.h"#endif#if CXIMAGE_SUPPORT_JBG#include "ximajbg.h"#endif#if CXIMAGE_SUPPORT_JASPER#include "ximajas.h"#endif////////////////////////////////////////////////////////////////////////////////#if CXIMAGE_SUPPORT_ENCODE////////////////////////////////////////////////////////////////////////////////bool CxImage::EncodeSafeCheck(CxFile *hFile){	if (hFile==NULL) {		strcpy(info.szLastError,CXIMAGE_ERR_NOFILE);		return true;	}	if (pDib==NULL){		strcpy(info.szLastError,CXIMAGE_ERR_NOIMAGE);		return true;	}	return false;}//////////////////////////////////////////////////////////////////////////////////#ifdef WIN32//bool CxImage::Save(LPCWSTR filename, DWORD imagetype)//{//	FILE* hFile;	//file handle to write the image//	if ((hFile=_wfopen(filename,L"wb"))==NULL)  return false;//	bool bOK = Encode(hFile,imagetype);//	fclose(hFile);//	return bOK;//}//#endif //WIN32////////////////////////////////////////////////////////////////////////////////// For UNICODE support: char -> TCHAR/** * Saves to disk the image in a specific format. * \param filename: file name * \param imagetype: file format, see ENUM_CXIMAGE_FORMATS * \return true if everything is ok */bool CxImage::Save(const TCHAR * filename, DWORD imagetype){	FILE* hFile;	//file handle to write the image#ifdef WIN32	if ((hFile=_tfopen(filename,_T("wb")))==NULL)  return false;	// For UNICODE support#else	if ((hFile=fopen(filename,"wb"))==NULL)  return false;#endif	bool bOK = Encode(hFile,imagetype);	fclose(hFile);	return bOK;}/////////////////////////////////////////////////////////////////////////////////** * Saves to disk the image in a specific format. * \param hFile: file handle, open and enabled for writing. * \param imagetype: file format, see ENUM_CXIMAGE_FORMATS * \return true if everything is ok */bool CxImage::Encode(FILE *hFile, DWORD imagetype){	CxIOFile file(hFile);	return Encode(&file,imagetype);}/////////////////////////////////////////////////////////////////////////////////** * Saves to memory buffer the image in a specific format. * \param buffer: output memory buffer pointer. Must be NULL, * the function allocates and fill the memory, * the application must free the buffer, see also FreeMemory(). * \param size: output memory buffer size. * \param imagetype: file format, see ENUM_CXIMAGE_FORMATS * \return true if everything is ok */bool CxImage::Encode(BYTE * &buffer, long &size, DWORD imagetype){	if (buffer!=NULL){		strcpy(info.szLastError,"the buffer must be empty");		return false;	}	CxMemFile file;	file.Open();	if(Encode(&file,imagetype)){		buffer=file.GetBuffer();		size=file.Size();		return true;	}	return false;}/////////////////////////////////////////////////////////////////////////////////** * Saves to disk the image in a specific format. * \param hFile: file handle (implemented using CxMemFile or CxIOFile), * open and enabled for writing. * \param imagetype: file format, see ENUM_CXIMAGE_FORMATS * \return true if everything is ok * \sa ENUM_CXIMAGE_FORMATS */bool CxImage::Encode(CxFile *hFile, DWORD imagetype){#if CXIMAGE_SUPPORT_BMP	if (imagetype==CXIMAGE_FORMAT_BMP){		CxImageBMP newima;		newima.Ghost(this);		if (newima.Encode(hFile)){			return true;		} else {			strcpy(info.szLastError,newima.GetLastError());			return false;		}	}#endif#if CXIMAGE_SUPPORT_ICO	if (imagetype==CXIMAGE_FORMAT_ICO){		CxImageICO newima;		newima.Ghost(this);		if (newima.Encode(hFile)){			return true;		} else {			strcpy(info.szLastError,newima.GetLastError());			return false;		}	}#endif#if CXIMAGE_SUPPORT_TIF	if (imagetype==CXIMAGE_FORMAT_TIF){		CxImageTIF newima;		newima.Ghost(this);		if (newima.Encode(hFile)){			return true;		} else {			strcpy(info.szLastError,newima.GetLastError());			return false;		}	}#endif#if CXIMAGE_SUPPORT_JPG	if (imagetype==CXIMAGE_FORMAT_JPG){		CxImageJPG newima;		newima.Ghost(this);		if (newima.Encode(hFile)){			return true;		} else {			strcpy(info.szLastError,newima.GetLastError());			return false;		}	}#endif#if CXIMAGE_SUPPORT_GIF	if (imagetype==CXIMAGE_FORMAT_GIF){		CxImageGIF newima;		newima.Ghost(this);		if (newima.Encode(hFile)){			return true;		} else {			strcpy(info.szLastError,newima.GetLastError());			return false;		}	}#endif#if CXIMAGE_SUPPORT_PNG	if (imagetype==CXIMAGE_FORMAT_PNG){		CxImagePNG newima;		newima.Ghost(this);		if (newima.Encode(hFile)){			return true;		} else {			strcpy(info.szLastError,newima.GetLastError());			return false;		}	}#endif#if CXIMAGE_SUPPORT_MNG	if (imagetype==CXIMAGE_FORMAT_MNG){		CxImageMNG newima;		newima.Ghost(this);		if (newima.Encode(hFile)){			return true;		} else {			strcpy(info.szLastError,newima.GetLastError());			return false;		}	}#endif#if CXIMAGE_SUPPORT_TGA	if (imagetype==CXIMAGE_FORMAT_TGA){		CxImageTGA newima;		newima.Ghost(this);		if (newima.Encode(hFile)){			return true;		} else {			strcpy(info.szLastError,newima.GetLastError());			return false;		}	}#endif#if CXIMAGE_SUPPORT_PCX	if (imagetype==CXIMAGE_FORMAT_PCX){		CxImagePCX newima;		newima.Ghost(this);		if (newima.Encode(hFile)){			return true;		} else {			strcpy(info.szLastError,newima.GetLastError());			return false;		}	}#endif#if CXIMAGE_SUPPORT_WBMP	if (imagetype==CXIMAGE_FORMAT_WBMP){		CxImageWBMP newima;		newima.Ghost(this);		if (newima.Encode(hFile)){			return true;		} else {			strcpy(info.szLastError,newima.GetLastError());			return false;		}	}#endif#if CXIMAGE_SUPPORT_WMF && CXIMAGE_SUPPORT_WINDOWS // <vho> - WMF/EMF support	if (imagetype==CXIMAGE_FORMAT_WMF){		CxImageWMF newima;		newima.Ghost(this);		if (newima.Encode(hFile)){			return true;		} else {			strcpy(info.szLastError,newima.GetLastError());			return false;		}	}#endif#if CXIMAGE_SUPPORT_J2K	if (imagetype==CXIMAGE_FORMAT_J2K){		CxImageJ2K newima;		newima.Ghost(this);		if (newima.Encode(hFile)){			return true;		} else {			strcpy(info.szLastError,newima.GetLastError());			return false;		}	}#endif#if CXIMAGE_SUPPORT_JBG	if (imagetype==CXIMAGE_FORMAT_JBG){		CxImageJBG newima;		newima.Ghost(this);		if (newima.Encode(hFile)){			return true;		} else {			strcpy(info.szLastError,newima.GetLastError());			return false;		}	}#endif#if CXIMAGE_SUPPORT_JASPER	if ( #if	CXIMAGE_SUPPORT_JP2		imagetype==CXIMAGE_FORMAT_JP2 ||  #endif #if	CXIMAGE_SUPPORT_JPC		imagetype==CXIMAGE_FORMAT_JPC ||  #endif #if	CXIMAGE_SUPPORT_PGX		imagetype==CXIMAGE_FORMAT_PGX ||  #endif #if	CXIMAGE_SUPPORT_PNM		imagetype==CXIMAGE_FORMAT_PNM ||  #endif #if	CXIMAGE_SUPPORT_RAS		imagetype==CXIMAGE_FORMAT_RAS ||  #endif		 false ){		CxImageJAS newima;		newima.Ghost(this);		if (newima.Encode(hFile,imagetype)){			return true;		} else {			strcpy(info.szLastError,newima.GetLastError());			return false;		}	}#endif	strcpy(info.szLastError,"Encode: Unknown format");	return false;}/////////////////////////////////////////////////////////////////////////////////** * Saves to disk or memory pagecount images, referenced by an array of CxImage pointers. * \param hFile: file handle. * \param pImages: array of CxImage pointers. * \param pagecount: number of images. * \param imagetype: can be CXIMAGE_FORMAT_TIF or CXIMAGE_FORMAT_GIF. * \return true if everything is ok */bool CxImage::Encode(FILE * hFile, CxImage ** pImages, int pagecount, DWORD imagetype){	CxIOFile file(hFile);	return Encode(&file, pImages, pagecount,imagetype);}/////////////////////////////////////////////////////////////////////////////////** * Saves to disk or memory pagecount images, referenced by an array of CxImage pointers. * \param hFile: file handle (implemented using CxMemFile or CxIOFile). * \param pImages: array of CxImage pointers. * \param pagecount: number of images. * \param imagetype: can be CXIMAGE_FORMAT_TIF or CXIMAGE_FORMAT_GIF. * \return true if everything is ok */bool CxImage::Encode(CxFile * hFile, CxImage ** pImages, int pagecount, DWORD imagetype){#if CXIMAGE_SUPPORT_TIF	if (imagetype==CXIMAGE_FORMAT_TIF){		CxImageTIF newima;		newima.Ghost(this);		if (newima.Encode(hFile,pImages,pagecount)){			return true;		} else {			strcpy(info.szLastError,newima.GetLastError());			return false;		}	}#endif#if CXIMAGE_SUPPORT_GIF	if (imagetype==CXIMAGE_FORMAT_GIF){		CxImageGIF newima;		newima.Ghost(this);		if (newima.Encode(hFile,pImages,pagecount)){			return true;		} else {			strcpy(info.szLastError,newima.GetLastError());			return false;		}	}#endif	strcpy(info.szLastError,"Multipage Encode, Unsupported operation for this format");	return false;}/////////////////////////////////////////////////////////////////////////////////** * exports the image into a RGBA buffer, Useful for OpenGL applications. * \param buffer: output memory buffer pointer. Must be NULL, * the function allocates and fill the memory, * the application must free the buffer, see also FreeMemory(). * \param size: output memory buffer size. * \return true if everything is ok */bool CxImage::Encode2RGBA(BYTE * &buffer, long &size){	if (buffer!=NULL){		strcpy(info.szLastError,"the buffer must be empty");		return false;	}	CxMemFile file;	file.Open();	if(Encode2RGBA(&file)){		buffer=file.GetBuffer();		size=file.Size();		return true;	}	return false;}/////////////////////////////////////////////////////////////////////////////////** * exports the image into a RGBA buffer, Useful for OpenGL applications. * \param hFile: file handle (implemented using CxMemFile or CxIOFile). * \return true if everything is ok */bool CxImage::Encode2RGBA(CxFile *hFile){	if (EncodeSafeCheck(hFile)) return false;	for (DWORD y = GetHeight()-1; (signed long) y > -1; y--) {		for(DWORD x = 0; x<GetWidth(); x++) {			RGBQUAD color = BlindGetPixelColor(x,y);			hFile->PutC(color.rgbRed);			hFile->PutC(color.rgbGreen);			hFile->PutC(color.rgbBlue);			hFile->PutC(color.rgbReserved);		}	}	return true;}////////////////////////////////////////////////////////////////////////////////#endif //CXIMAGE_SUPPORT_ENCODE////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////#if CXIMAGE_SUPPORT_DECODE////////////////////////////////////////////////////////////////////////////////// For UNICODE support: char -> TCHAR/** * Reads from disk the image in a specific format. * - If decoding fails using the specified image format, * the function will try the automatic file format recognition. * * \param filename: file name * \param imagetype: file format, see ENUM_CXIMAGE_FORMATS * \return true if everything is ok */bool CxImage::Load(const TCHAR * filename, DWORD imagetype)//bool CxImage::Load(const char * filename, DWORD imagetype){	/*FILE* hFile;	//file handle to read the image	if ((hFile=fopen(filename,"rb"))==NULL)  return false;	bool bOK = Decode(hFile,imagetype);	fclose(hFile);*/	/* automatic file type recognition */	bool bOK = false;	if ( imagetype > 0 && imagetype < CMAX_IMAGE_FORMATS ){		FILE* hFile;	//file handle to read the image#ifdef WIN32		if ((hFile=_tfopen(filename,_T("rb")))==NULL)  return false;	// For UNICODE support#else		if ((hFile=fopen(filename,"rb"))==NULL)  return false;#endif		bOK = Decode(hFile,imagetype);		fclose(hFile);		if (bOK) return bOK;	}	char szError[256];	strcpy(szError,info.szLastError); //save the first error	// if failed, try automatic recognition of the file...	FILE* hFile;#ifdef WIN32	if ((hFile=_tfopen(filename,_T("rb")))==NULL)  return false;	// For UNICODE support#else	if ((hFile=fopen(filename,"rb"))==NULL)  return false;#endif	bOK = Decode(hFile,CXIMAGE_FORMAT_UNKNOWN);	fclose(hFile);	if (!bOK && imagetype > 0) strcpy(info.szLastError,szError); //restore the first error	return bOK;}////////////////////////////////////////////////////////////////////////////////#ifdef WIN32

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -