您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ FreeImage_GetBits函数代码示例

51自学网 2021-06-01 20:48:22
  C++
这篇教程C++ FreeImage_GetBits函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中FreeImage_GetBits函数的典型用法代码示例。如果您正苦于以下问题:C++ FreeImage_GetBits函数的具体用法?C++ FreeImage_GetBits怎么用?C++ FreeImage_GetBits使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了FreeImage_GetBits函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: width

bool TextureManager::LoadTexture(const char *filename, const unsigned int texID, bool generate, GLenum target,                                 GLenum image_format, GLint internal_format, GLint level, GLint border) {  // image format  FREE_IMAGE_FORMAT fif = FIF_UNKNOWN;  // pointer to the image, once loaded  FIBITMAP *dib(0);  // pointer to the image data  BYTE *bits(0);  // image width and height  unsigned int width(0), height(0);  // OpenGL's image ID to map to  GLuint gl_texID;  // check the file signature and deduce its format  fif = FreeImage_GetFileType(filename, 0);  // if still unknown, try to guess the file format from the file extension  if (fif == FIF_UNKNOWN)    fif = FreeImage_GetFIFFromFilename(filename);  // if still unkown, return failure  if (fif == FIF_UNKNOWN)    return false;  // check that the plugin has reading capabilities and load the file  if (FreeImage_FIFSupportsReading(fif))    dib = FreeImage_Load(fif, filename);  // if the image failed to load, return failure  if (!dib)    return false;  // retrieve the image data  bits = FreeImage_GetBits(dib);  // get the image width and height  width = FreeImage_GetWidth(dib);  height = FreeImage_GetHeight(dib);  // if this somehow one of these failed (they shouldn't), return failure  if ((bits == 0) || (width == 0) || (height == 0))    return false;  // if this texture ID is in use, unload the current texture  if (m_texID.find(texID) != m_texID.end())    glDeleteTextures(1, &(m_texID[texID]));  if (generate) {    // generate an OpenGL texture ID for this texture    glGenTextures(1, &gl_texID);    // store the texture ID mapping    m_texID[texID] = gl_texID;    // bind to the new texture ID    glBindTexture(target, gl_texID);  }  // store the texture data for OpenGL use  glTexImage2D(target, level, internal_format, width, height, border, image_format, GL_UNSIGNED_BYTE, bits);  // Free FreeImage's copy of the data  FreeImage_Unload(dib);  // return success  return true;}
开发者ID:dooglz,项目名称:Celestial-Drift,代码行数:60,


示例2: dib

bool CTexture::loadTexture2D(std::string sTexturePath, bool bGenerateMipMaps){	FREE_IMAGE_FORMAT fif = FIF_UNKNOWN;	FIBITMAP* dib(0);	fif = FreeImage_GetFileType(sTexturePath.c_str(), 0); // 检查文件签名,推导其格式	if(fif == FIF_UNKNOWN) fif = FreeImage_GetFIFFromFilename(sTexturePath.c_str()); 	// 从扩展名猜测格式	if(fif == FIF_UNKNOWN) return false;	if(FreeImage_FIFSupportsReading(fif)) dib = FreeImage_Load(fif, sTexturePath.c_str());	if(!dib) return false;	GLubyte* bDataPointer = FreeImage_GetBits(dib);	if(bDataPointer == NULL || FreeImage_GetWidth(dib) == 0 || FreeImage_GetHeight(dib) == 0)		return false;	GLenum format = FreeImage_GetBPP(dib) == 24 ? GL_BGR : FreeImage_GetBPP(dib) == 8 ? GL_LUMINANCE : 0;	createFromData(bDataPointer, 		FreeImage_GetWidth(dib), FreeImage_GetHeight(dib), FreeImage_GetBPP(dib), format, bGenerateMipMaps);		FreeImage_Unload(dib);	m_sTexturePath = sTexturePath;	return true;}
开发者ID:keke2014,项目名称:MyOpenGL,代码行数:25,


示例3: FreeImage_Allocate

void FreeImageGifData::add24bitBGRDataPage(int width, int height, BYTE* pData){    FIBITMAP* newBitmap = FreeImage_Allocate(width, height, 24, 0x0000FF, 0x00FF00, 0xFF0000);    BYTE* bitmapData = FreeImage_GetBits(newBitmap);    memcpy(bitmapData, pData, width * height * 3);        //Set metadata    FIBITMAP* convBitmap = FreeImage_ColorQuantizeEx(newBitmap, FIQ_WUQUANT, 256);    FITAG* delayTag = FreeImage_CreateTag();        FreeImage_SetMetadata(FIMD_ANIMATION, convBitmap, NULL, NULL);    LONG delayVal = 20;    if (delayTag) {        FreeImage_SetTagKey(delayTag, "FrameTime");        FreeImage_SetTagType(delayTag, FIDT_LONG);        FreeImage_SetTagCount(delayTag, 1);        FreeImage_SetTagLength(delayTag, 4);        FreeImage_SetTagValue(delayTag, &delayVal);        FreeImage_SetMetadata(FIMD_ANIMATION, convBitmap, FreeImage_GetTagKey(delayTag), delayTag);        FreeImage_DeleteTag(delayTag);    }    FreeImage_AppendPage(m_gifHandle, convBitmap);        int pCount = FreeImage_GetPageCount(m_gifHandle);    FreeImage_Unload(newBitmap);    FreeImage_Unload(convBitmap);}
开发者ID:Wohlhabend-Networks,项目名称:LunaDLL,代码行数:30,


示例4: FreeImage_GetFileType

		GLubyte* Texture::loadToBitmap(std::string path, bool flip)		{			const char* pathCStr = path.c_str();			FREE_IMAGE_FORMAT format = FIF_UNKNOWN;			format = FreeImage_GetFileType(pathCStr);			if (format == FIF_UNKNOWN)				format = FreeImage_GetFIFFromFilename(pathCStr);			if (format == FIF_UNKNOWN) {				std::cout << "Failed to load image at " << pathCStr << std::endl;				return nullptr;			}			if (!FreeImage_FIFSupportsReading(format))			{				std::cout << "Detected image format cannot be read! " << pathCStr << std::endl;				return nullptr;			}			m_bitmap = FreeImage_Load(format, pathCStr);			if (flip)				FreeImage_FlipVertical(m_bitmap);			GLint bitsPerPixel = FreeImage_GetBPP(m_bitmap);			if (bitsPerPixel == 32)				m_bitmap32 = m_bitmap;			else				m_bitmap32 = FreeImage_ConvertTo32Bits(m_bitmap);			m_width = FreeImage_GetWidth(m_bitmap32);			m_height = FreeImage_GetHeight(m_bitmap32);			return FreeImage_GetBits(m_bitmap32);		}
开发者ID:Christopherbikie,项目名称:Bipolar,代码行数:33,


示例5: TextureFromFile

GLuint TextureFromFile(const char* filename){    FREE_IMAGE_FORMAT fileFormat = FIF_UNKNOWN;    FIBITMAP *image(0);      BYTE* bits(0);    unsigned int width(0), height(0);         fileFormat = FreeImage_GetFileType(filename, 0);    image = FreeImage_Load(fileFormat, filename);      if(!image)        return 0;      bits = FreeImage_GetBits(image);    width = FreeImage_GetWidth(image);      height = FreeImage_GetHeight(image);      GLuint tex;    glGenTextures(1, &tex);      glBindTexture(GL_TEXTURE_2D, tex);    gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, width, height, GL_BGR, GL_UNSIGNED_BYTE, bits);      glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);      FreeImage_Unload(image);      return tex;}
开发者ID:valasekg,项目名称:elu_fi_bsc_cg,代码行数:32,


示例6: FreeImage_Allocate

bool ZitexConverter::convert(const QString & inFileName, const ConfigDao & configuration){   auto inFileNameStdStr = inFileName.toStdString();   Zitex::Reader reader;   Zitex::Reader::Data data;   reader.readFromFile(inFileNameStdStr, data);   for (uint32_t it = 0; it < data.header->texImagesNum; ++it)   {      Zitex::TexImageHeader * texImageHeader = data.texImages[it].header;      if (texImageHeader->level == 0)      {         auto width = texImageHeader->width;         auto height = texImageHeader->height;         FIBITMAP * fiBitmap = FreeImage_Allocate(width, height, 32);         squish::DecompressImage(FreeImage_GetBits(fiBitmap), width, height, data.texImages[it].data,                                 data.header->squishFlags);         // section(".", 0, -2) copyes from begin to 2nd section from end.         // The first section from end is the extension         std::string outFileNameStdStr = inFileName.section(".", 0, -2).append(".png").toStdString();         FreeImage_FlipVertical(fiBitmap);         FreeImage_Save(FIF_PNG, fiBitmap, outFileNameStdStr.c_str());         FreeImage_Unload(fiBitmap);      }   }}
开发者ID:patrykbajos,项目名称:zinot-project,代码行数:35,


示例7: getBmpFromPixels

FIBITMAP* getBmpFromPixels(ofPixels_<PixelType> &pix){	PixelType* pixels = pix.getData();	unsigned int width = pix.getWidth();	unsigned int height = pix.getHeight();	unsigned int bpp = pix.getBitsPerPixel();		FREE_IMAGE_TYPE freeImageType = getFreeImageType(pix);	FIBITMAP* bmp = FreeImage_AllocateT(freeImageType, width, height, bpp);	unsigned char* bmpBits = FreeImage_GetBits(bmp);	if(bmpBits != NULL) {		int srcStride = width * pix.getBytesPerPixel();		int dstStride = FreeImage_GetPitch(bmp);		unsigned char* src = (unsigned char*) pixels;		unsigned char* dst = bmpBits;		if(srcStride != dstStride){			for(int i = 0; i < (int)height; i++) {				memcpy(dst, src, srcStride);				src += srcStride;				dst += dstStride;			}		}else{			memcpy(dst,src,dstStride*height);		}	} else {		ofLogError("ofImage") << "getBmpFromPixels(): unable to get FIBITMAP from ofPixels";	}		// ofPixels are top left, FIBITMAP is bottom left	FreeImage_FlipVertical(bmp);	return bmp;}
开发者ID:K0j0,项目名称:openFrameworks,代码行数:32,


示例8: _tmain

int _tmain(int argc, _TCHAR* argv[]){	const char* filename = "1.jpg";	FREE_IMAGE_FORMAT fif = FreeImage_GetFileType(filename, 0);	FIBITMAP *dib(0);	//pointer to the image data	BYTE* bits(0);	//image width and height	unsigned int width(0), height(0);	if(fif == FIF_UNKNOWN) 		fif = FreeImage_GetFIFFromFilename(filename);	if(fif == FIF_UNKNOWN)		return 1;	if(FreeImage_FIFSupportsReading(fif))		dib = FreeImage_Load(fif, filename);	//retrieve the image data	bits = FreeImage_GetBits(dib);	//get the image width and height	width = FreeImage_GetWidth(dib);	height = FreeImage_GetHeight(dib);	//if this somehow one of these failed (they shouldn't), return failure	if((bits == 0) || (width == 0) || (height == 0))		return 1;	return 0;}
开发者ID:skatebill,项目名称:MyEngineVersion3,代码行数:29,


示例9: FreeImage_GetFileType

	Texture::Texture(const char* file) {		FREE_IMAGE_FORMAT fif = FIF_UNKNOWN;		FIBITMAP* dib = nullptr;		fif = FreeImage_GetFileType(file, 0);		if (fif == FIF_UNKNOWN)			fif = FreeImage_GetFIFFromFilename(file);		if (fif != FIF_UNKNOWN) {			if (FreeImage_FIFSupportsReading(fif))				dib = FreeImage_Load(fif, file);			BYTE* pixels = FreeImage_GetBits(dib);			int width = FreeImage_GetWidth(dib);			int height = FreeImage_GetHeight(dib);			int bits = FreeImage_GetBPP(dib);			int size = width * height * (bits / 8);			BYTE* result = new BYTE[size];			memcpy(result, pixels, size);			FreeImage_Unload(dib);			glGenTextures(1, &m_ID);			glBindTexture(GL_TEXTURE_2D, m_ID);			glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, result ? result : NULL);			glBindTexture(GL_TEXTURE_2D, 0);		}		else {			m_ID = -1;		}	}
开发者ID:Jacob-Mango,项目名称:ME-Engine,代码行数:27,


示例10: FreeImage_ConvertTo32Bits

GLuint Engine::useTexture(char* texDir, bool wrap) {	FIBITMAP* imagePtr =		FreeImage_ConvertTo32Bits(			FreeImage_Load(				FreeImage_GetFileType(texDir, 0), texDir)			);	GLuint texture;	glGenTextures(1, &texture); // i used to be 1	glBindTexture(GL_TEXTURE_2D, texture);	glTexImage2D(GL_TEXTURE_2D, 0,		GL_SRGB_ALPHA,		FreeImage_GetWidth(imagePtr),		FreeImage_GetHeight(imagePtr),		0, GL_BGRA, GL_UNSIGNED_BYTE,		(void*)FreeImage_GetBits(imagePtr));	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap ? GL_REPEAT : GL_CLAMP);	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap ? GL_REPEAT : GL_CLAMP);	// Clear from RAM	FreeImage_Unload(imagePtr);	// Unbind when finished uplloading	glBindTexture(GL_TEXTURE_2D, 0);	return texture;}
开发者ID:martinsuas,项目名称:ms7605Engine,代码行数:28,


示例11: value

/**Custom gamma correction based on the ITU-R BT.709 standard@param dib RGBF image to be corrected@param gammaval Gamma value (2.2 is a good default value)@return Returns TRUE if successful, returns FALSE otherwise*/static BOOL REC709GammaCorrection(FIBITMAP *dib, const float gammaval) {	if(FreeImage_GetImageType(dib) != FIT_RGBF)		return FALSE;	float slope = 4.5F;	float start = 0.018F;		const float fgamma = (float)((0.45 / gammaval) * 2);	if(gammaval >= 2.1F) {		start = (float)(0.018 / ((gammaval - 2) * 7.5));		slope = (float)(4.5 * ((gammaval - 2) * 7.5));	} else if (gammaval <= 1.9F) {		start = (float)(0.018 * ((2 - gammaval) * 7.5));		slope = (float)(4.5 / ((2 - gammaval) * 7.5));	}	const unsigned width  = FreeImage_GetWidth(dib);	const unsigned height = FreeImage_GetHeight(dib);	const unsigned pitch  = FreeImage_GetPitch(dib);	BYTE *bits = (BYTE*)FreeImage_GetBits(dib);	for(unsigned y = 0; y < height; y++) {		float *pixel = (float*)bits;		for(unsigned x = 0; x < width; x++) {			for(int i = 0; i < 3; i++) {				*pixel = (*pixel <= start) ? *pixel * slope : (1.099F * pow(*pixel, fgamma) - 0.099F);				pixel++;			}		}		bits += pitch;	}	return TRUE;}
开发者ID:12019,项目名称:svn.gov.pt,代码行数:41,


示例12: dc

// CPreview message handlersvoid CPreview::OnPaint(){	CPaintDC dc(this); // device context for painting	CRect rct;	GetClientRect(&rct);	dc.FillSolidRect(&rct, m_clr);   // Fill background first	if (m_dib != NULL)	{		// Draw the thumbnail		int width = (int)(FreeImage_GetWidth(m_dib)*theApp.thumb_zoom_);		if (width > rct.Width()) width = rct.Width();		int height = (int)(FreeImage_GetHeight(m_dib)*theApp.thumb_zoom_);		if (height > rct.Height()) height = rct.Height();		int left = (rct.Width() - width)/2;		if (left < 0) left = 0;		::StretchDIBits(dc.GetSafeHdc(),					left, 0, width, height,					0, 0, FreeImage_GetWidth(m_dib), FreeImage_GetHeight(m_dib),					FreeImage_GetBits(m_dib), FreeImage_GetInfo(m_dib), DIB_RGB_COLORS, SRCCOPY);	}	else	{		// Just draw some text to say there is no preview		dc.SetTextAlign(TA_CENTER);		dc.TextOut(rct.Width()/2, 20, "No Preview      ", 12);		dc.TextOut(rct.Width()/2, 40, "Available       ", 12);	}}
开发者ID:AndrewWPhillips,项目名称:HexEdit,代码行数:32,


示例13: TestFIA_IOLoadColourArrayData

static voidTestFIA_IOLoadColourArrayData(CuTest* tc){	FIBITMAP *dib1 = NULL, *dib2 = NULL;	FREE_IMAGE_TYPE type;	int bpp, err;    	const char *file = "C://cup.tif";	dib1 = FIA_LoadFIBFromFile(file);	CuAssertTrue(tc, dib1 != NULL);	dib2 = FreeImage_AllocateT (FIT_BITMAP, FreeImage_GetWidth(dib1), FreeImage_GetHeight(dib1), 8, 0, 0, 0);	PROFILE_START("CopyColourBytesToFIBitmap");	for(int i=0; i < 1000; i++) {		//FIA_CopyColourBytesToFIBitmap (dib2, FreeImage_GetBits(dib1), 0, 1, COLOUR_ORDER_RGB);		FIA_CopyColourBytesTo8BitFIBitmap (dib2, FreeImage_GetBits(dib1), 24, FI_RGBA_RED, 0, 1);	}	PROFILE_STOP("CopyColourBytesToFIBitmap");	FIA_SaveFIBToFile (dib2, TEST_DATA_OUTPUT_DIR "/IO/save-colour-test.bmp", BIT8);	FreeImage_Unload(dib1);	FreeImage_Unload(dib2);}
开发者ID:atdgroup,项目名称:FreeImageAlgorithms,代码行数:30,


示例14: load_texture

GLuint load_texture(char* file, GLint param){	BYTE* bits(0);	unsigned int width(0), height(0);	GLuint gl_texID;	FIBITMAP *dib = get_dib(file);	if (!dib)		return -1;	bits = FreeImage_GetBits(dib);	width = FreeImage_GetWidth(dib);	height = FreeImage_GetHeight(dib);	if ((bits == 0) || (width == 0) || (height == 0))		return -1;	glGenTextures(1, &gl_texID);	glBindTexture(GL_TEXTURE_2D, gl_texID);	if (FreeImage_GetBPP(dib) == 24){		glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_BGR, GL_UNSIGNED_BYTE, bits);	}	else if (FreeImage_GetBPP(dib) == 32){		glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_BGRA, GL_UNSIGNED_BYTE, bits);	}	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, param);	glBindTexture(GL_TEXTURE_2D,0);	FreeImage_Unload(dib);	return gl_texID;}
开发者ID:insanitymoon,项目名称:Babel,代码行数:29,


示例15: bits

/** /brief Method that import a texture to be used on the model* /param[in] fTexture a constant char array containing the path to the file of the texture* /param[in] tex_number an unsigned integer representing the type of texture (i.e. 0 = Diffuse color, 1 = Normalmap, 2 = Specular Color)* /return a boolean indicating if the import was successful of not*/GLboolean Model::importTexture(const GLchar * fTexture, GLuint tex_number){	GLboolean import_is_ok = GL_FALSE;	FREE_IMAGE_FORMAT fif = FIF_UNKNOWN;	FIBITMAP *dib(0);	BYTE* bits(0);	GLuint width(0), height(0);	fif = FreeImage_GetFileType(fTexture, 0);	if (FreeImage_FIFSupportsReading(fif))	{		dib = FreeImage_Load(fif, fTexture);		dib = FreeImage_ConvertTo32Bits(dib);		bits = FreeImage_GetBits(dib);		width = FreeImage_GetWidth(dib);		height = FreeImage_GetHeight(dib);		import_is_ok = GL_TRUE;		glBindTexture(GL_TEXTURE_2D, m_texture_id[tex_number]);		glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_BGRA, GL_UNSIGNED_BYTE, &bits[0]);		glGenerateMipmap(GL_TEXTURE_2D);		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR);		FreeImage_Unload(dib);	}	return import_is_ok;}
开发者ID:mobeaudoin,项目名称:ogl-first-engine,代码行数:35,


示例16: glLoadTexture

	///////////////////////////////////////////////////////////////////////////	///	/// @fn bool glLoadTexture(const std::string& nomFichier, unsigned int& idTexture,	///                        bool genererTexture)	///	/// Cette fonction crée une texture OpenGL à partir d'une image contenu	/// dans un fichier.  FreeImage est utilisée pour lire l'image, donc tous	/// les formats reconnues par cette librairie devraient être supportés.	///	/// @param[in]  nomFichier     : Le nom du fichier image à charger.	/// @param[out] idTexture      : L'identificateur de la texture créée.	/// @param[in]  genererTexture : Doit-on demander à OpenGL de générer un numéro	///										de texture au préalable?	///	/// @return Vrai si le chargement a réussi, faux autrement.	///	///////////////////////////////////////////////////////////////////////////	bool glLoadTexture(const std::string& nomFichier, unsigned int& idTexture, bool genererTexture)	{		// Ce code de lecture générique d'un fichier provient de la		// documentation de FreeImage		FREE_IMAGE_FORMAT format = FIF_UNKNOWN;		// check the file signature and deduce its format		// (the second argument is currently not used by FreeImage)		format = FreeImage_GetFileType(nomFichier.c_str(), 0);		if(format == FIF_UNKNOWN) {			// no signature ?			// try to guess the file format from the file extension			format = FreeImage_GetFIFFromFilename(nomFichier.c_str());		}		// check that the plugin has reading capabilities ...		if((format == FIF_UNKNOWN) || !FreeImage_FIFSupportsReading(format)) {			utilitaire::afficherErreur(				std::string("Format du fichier image /"") +				std::string(nomFichier.c_str()) + std::string("/" non supporté")				);			return false;		}		// ok, let's load the file		FIBITMAP* dib = FreeImage_Load(format, nomFichier.c_str(), 0);		if (dib == 0) {			utilitaire::afficherErreur(				std::string("Erreur à la lecture du fichier /"") +				std::string(nomFichier.c_str()) + std::string("/"")				);			return false;		}		FIBITMAP* dib32 = FreeImage_ConvertTo32Bits(dib);		if (dib32 == 0) {			utilitaire::afficherErreur(				std::string("Incapable de convertir le fichier /"") +				std::string(nomFichier.c_str()) + std::string("/" en 32 bpp.")				);			FreeImage_Unload(dib);			return false;		}		int pitch = FreeImage_GetPitch(dib32);		glCreateTexture(			FreeImage_GetBits(dib32),			FreeImage_GetWidth(dib32),			FreeImage_GetHeight(dib32),			FreeImage_GetBPP(dib32),			FreeImage_GetPitch(dib32),			idTexture,			genererTexture			);		FreeImage_Unload(dib32);		FreeImage_Unload(dib);		return true;	}
开发者ID:gravufo,项目名称:MLGHockey,代码行数:76,


示例17: FreeImage_GetFIFFromFilename

unsigned char * HVSTGFX::loadImageFile(char *fileName, HVSTGFX::IMAGEFILE * imgFile,  GLuint &texture){	//FREE_IMAGE_FORMAT fif = FIF_PNG;	FREE_IMAGE_FORMAT fif = FreeImage_GetFIFFromFilename(fileName);	//pointer to the image data	unsigned char* bits;	unsigned char tempRGB;	GLuint tempTex = 0;	GLenum errCode;	const unsigned char *errString;	bool error = false;	std::string file(fileName);		if(FreeImage_FIFSupportsReading(fif))		imgFile->dib = FreeImage_Load(fif, fileName);		if(!imgFile->dib)	{		glbl->debugger->writeString("failed to open sprite " + *fileName);		return NULL;	}	bits = FreeImage_GetBits(imgFile->dib);	imgFile->width = FreeImage_GetWidth(imgFile->dib); imgFile->height = FreeImage_GetHeight(imgFile->dib);	imgFile->size = sizeof(bits);	int size = imgFile->width*imgFile->height;//(FreeImage_GetWidth(dib) * FreeImage_GetHeight(dib));	for (int imageIDx = 0; imageIDx < size * 4; imageIDx += 4)	{		tempRGB = bits[imageIDx];		bits[imageIDx] = bits[imageIDx + 2];		bits[imageIDx + 2] = tempRGB;	}		glGenTextures(1, &tempTex);	texture = tempTex;		errCode = glGetError();	if (errCode != GL_NO_ERROR)	{		MessageBox(NULL, _T("Unable to detect OpenGL support. Check if you have your graphics driver installed, or if your graphics card supports OpenGL."), NULL, NULL);	}	glBindTexture(GL_TEXTURE_2D, texture);		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, imgFile->width, imgFile->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, bits);		//FreeImage_Unload(dib);	#ifdef _DEBUG	if (!error)		glbl->debugger->writeString("successfully loaded sprite " + file + "/n");#endif	return bits;}
开发者ID:MGZero,项目名称:Harvest,代码行数:59,


示例18: FREEIMAGE_LoadImage

	FREEIMAGE_BMP*	FREEIMAGE_LoadImage(const UString& filePath)	{		FREEIMAGE_BMP* vix_bmp = new FREEIMAGE_BMP;		vix_bmp->path = filePath;		vix_bmp->name = getFileName(filePath);		vix_bmp->format = FREEIMAGE_FormatFromExtension(getFileExtension(filePath, false));		vix_bmp->data = NULL;		vix_bmp->bitmap = NULL;		/*Here we must */				//Check file signature and deduce format#ifdef UNICODE		vix_bmp->format = FreeImage_GetFileTypeU(filePath.c_str());#else		vix_bmp->format = FreeImage_GetFileType(filePath.c_str());#endif		if (vix_bmp->format == FIF_UNKNOWN) {#ifdef UNICODE			vix_bmp->format = FreeImage_GetFIFFromFilenameU(filePath.c_str());#else			vix_bmp->format = FreeImage_GetFIFFromFilename(filePath.c_str());#endif		}					//if still unknown, return NULL;		if (vix_bmp->format == FIF_UNKNOWN)			return NULL;		//Check if FreeImage has reading capabilities		if (FreeImage_FIFSupportsReading(vix_bmp->format)) {#ifdef UNICODE			//read image into struct pointer			vix_bmp->bitmap = FreeImage_LoadU(vix_bmp->format, filePath.c_str());#else			vix_bmp->bitmap = FreeImage_Load(vix_bmp->format, filePath.c_str());#endif					}		//If image failed to load, return NULL		if (!vix_bmp->bitmap)			return NULL;		FreeImage_FlipVertical(vix_bmp->bitmap);		//Retrieve image data		vix_bmp->data = FreeImage_GetBits(vix_bmp->bitmap);		//Retrieve image width		vix_bmp->header.width = FreeImage_GetWidth(vix_bmp->bitmap);		//Retrieve image height		vix_bmp->header.height = FreeImage_GetHeight(vix_bmp->bitmap);		if (vix_bmp->data == 0 || vix_bmp->header.width == 0 || vix_bmp->header.height == 0)			return NULL;		//return bitmap		return vix_bmp;	}
开发者ID:eric-fonseca,项目名称:Throw-Things-at-Monsters,代码行数:59,


示例19: fmg_prolongate

/**Coarse-to-fine prolongation by bilinear interpolation. nf is the fine-grid dimension. The coarsegridsolution is input as uc[0..nc-1][0..nc-1], where nc = nf/2 + 1. The fine-grid solution isreturned in uf[0..nf-1][0..nf-1].*/static void fmg_prolongate(FIBITMAP *UF, FIBITMAP *UC, int nf) {	int row_uc, row_uf, col_uc, col_uf;	const int uf_pitch  = FreeImage_GetPitch(UF) / sizeof(float);	const int uc_pitch  = FreeImage_GetPitch(UC) / sizeof(float);		float *uf_bits = (float*)FreeImage_GetBits(UF);	const float *uc_bits = (float*)FreeImage_GetBits(UC);		// do elements that are copies	{		const int nc = nf/2 + 1;		float *uf_scan = uf_bits;		const float *uc_scan = uc_bits;				for (row_uc = 0; row_uc < nc; row_uc++) {			for (col_uc = 0, col_uf = 0; col_uc < nc; col_uc++, col_uf += 2) {				// calculate UF(2*row_uc, col_uf) = UC(row_uc, col_uc);				uf_scan[col_uf] = uc_scan[col_uc];			}			uc_scan += uc_pitch;			uf_scan += 2 * uf_pitch;		}	}	// do odd-numbered columns, interpolating vertically	{				for(row_uf = 1; row_uf < nf-1; row_uf += 2) {			float *uf_scan = uf_bits + row_uf * uf_pitch;			for (col_uf = 0; col_uf < nf; col_uf += 2) {				// calculate UF(row_uf, col_uf) = 0.5 * ( UF(row_uf+1, col_uf) + UF(row_uf-1, col_uf) )				uf_scan[col_uf] = 0.5F * ( *(uf_scan + uf_pitch + col_uf) + *(uf_scan - uf_pitch + col_uf) );			}		}	}	// do even-numbered columns, interpolating horizontally	{		float *uf_scan = uf_bits;		for(row_uf = 0; row_uf < nf; row_uf++) {			for (col_uf = 1; col_uf < nf-1; col_uf += 2) {				// calculate UF(row_uf, col_uf) = 0.5 * ( UF(row_uf, col_uf+1) + UF(row_uf, col_uf-1) )				uf_scan[col_uf] = 0.5F * ( uf_scan[col_uf + 1] + uf_scan[col_uf - 1] );			}			uf_scan += uf_pitch;		}	}}
开发者ID:Ayane,项目名称:BLPConverter,代码行数:51,


示例20: FreeImage_GetFileType

bool tpImageIO::readHDR(tpImageColorHDR& I, const char* path){	FREE_IMAGE_FORMAT fifmt = FreeImage_GetFileType(path, 0);		if(fifmt == FIF_UNKNOWN)	{		std::cerr << "[Error] tpImageIO : Unknow type !" << std::endl; 		//TODO: Exceptions ?		return false;	}			FIBITMAP *dib = FreeImage_Load(fifmt, path,0);    	if( dib == NULL )	{		std::cerr << "[Error] tpImageIO : Impossible d'ouvrir l'image : " << path << std::endl;		// TODO: Exceptions ?		return false;	}	if(FreeImage_GetImageType(dib)!=FIT_RGBF)	{		std::cerr << "[Error] tpImageIO : Unknow type !" << std::endl; 		//TODO: Exceptions ?		return false;	}	unsigned width = FreeImage_GetWidth(dib);	unsigned height = FreeImage_GetHeight(dib);	unsigned pitch = FreeImage_GetPitch(dib);	I.resize(height,width);	FREE_IMAGE_TYPE image_type = FreeImage_GetImageType(dib);	// test pixel access avoiding scanline calculations	// to speed-up the image processing	if(image_type == FIT_RGBF) {		BYTE *bits = (BYTE*)FreeImage_GetBits(dib);		for(int y = 0; y < height; y++) {		FIRGBF *pixel = (FIRGBF*)bits;		for(int x = 0; x < width; x++) {		I[y][x].r = pixel[x].red;		I[y][x].g = pixel[x].green;		I[y][x].b = pixel[x].blue;		}		// next line		bits += pitch;		}	}	FreeImage_Unload(dib);	return true;}
开发者ID:beltegeuse,项目名称:HDRComposer,代码行数:57,


示例21: FreeImage_FlipVertical

SDL_Surface *GraphicsHelps::fi2sdl(FIBITMAP *img){    int h = static_cast<int>(FreeImage_GetHeight(img));    int w = static_cast<int>(FreeImage_GetWidth(img));    FreeImage_FlipVertical(img);    SDL_Surface *surf = SDL_CreateRGBSurfaceFrom(FreeImage_GetBits(img),                        w, h, 32, w * 4, FI_RGBA_RED_MASK, FI_RGBA_GREEN_MASK, FI_RGBA_BLUE_MASK, FI_RGBA_ALPHA_MASK);    return surf;}
开发者ID:jpmac26,项目名称:PGE-Project,代码行数:9,


示例22: fmg_addint

/**Does coarse-to-fine interpolation and adds result to uf. nf is the fine-grid dimension. Thecoarse-grid solution is input as uc[0..nc-1][0..nc-1], where nc = nf/2+1. The fine-grid solutionis returned in uf[0..nf-1][0..nf-1]. res[0..nf-1][0..nf-1] is used for temporary storage.*/static void fmg_addint(FIBITMAP *UF, FIBITMAP *UC, FIBITMAP *RES, int nf) {	fmg_prolongate(RES, UC, nf);	const int uf_pitch  = FreeImage_GetPitch(UF) / sizeof(float);	const int res_pitch  = FreeImage_GetPitch(RES) / sizeof(float);		float *uf_bits = (float*)FreeImage_GetBits(UF);	const float *res_bits = (float*)FreeImage_GetBits(RES);	for(int row = 0; row < nf; row++) {		for(int col = 0; col < nf; col++) {			// calculate UF(row, col) = UF(row, col) + RES(row, col);			uf_bits[col] += res_bits[col];		}		uf_bits += uf_pitch;		res_bits += res_pitch;	}}
开发者ID:Ayane,项目名称:BLPConverter,代码行数:23,


示例23: bits

	unsigned char* GLES2Texture::loadImage(const char *filename, int& colorDepth)	{		//image format		FREE_IMAGE_FORMAT fif = FIF_UNKNOWN;		//pointer to the image, once loaded		FIBITMAP *dib(0);		//pointer to the image data		BYTE* bits(0);		//image width and height		unsigned int width(0), height(0);		//check the file signature and deduce its format		fif = FreeImage_GetFileType(filename, 0);		//if still unknown, try to guess the file format from the file extension		if(fif == FIF_UNKNOWN) 			fif = FreeImage_GetFIFFromFilename(filename);		//if still unkown, return failure		if(fif == FIF_UNKNOWN)			return NULL;		//check that the plugin has reading capabilities and load the file		if(FreeImage_FIFSupportsReading(fif))			dib = FreeImage_Load(fif, filename);		//if the image failed to load, return failure		if(!dib)			return NULL;		int datasize = FreeImage_GetDIBSize(dib);		//retrieve the image data		bits = FreeImage_GetBits(dib);		//get the image width and height		width = FreeImage_GetWidth(dib);		height = FreeImage_GetHeight(dib);		//get the image bpp		colorDepth = FreeImage_GetBPP(dib);		//if this somehow one of these failed (they shouldn't), return failure		if((bits == 0) || (width == 0) || (height == 0))			return NULL;		mWidth = width;		mHeight = height;		// BGRA 转成 RGBA		unsigned char* buffer = new unsigned char[datasize];		int i=0;		for (i=0; i<datasize; i+=4) {			(buffer+i)[0] = (bits+i)[2];			(buffer+i)[1] = (bits+i)[1];			(buffer+i)[2] = (bits+i)[0];			(buffer+i)[3] = (bits+i)[3];		}		//Free FreeImage's copy of the data		FreeImage_Unload(dib);		return buffer;	}
开发者ID:crackgame,项目名称:easy2d,代码行数:57,


示例24: textureFromBytes

Ogre::TexturePtr textureFromBytes(const QByteArray &ba,                                  const std::string &name) {  static bool fi_init = false;  if (!fi_init) {    FreeImage_Initialise();  }  void *data = const_cast<char *>(ba.data());  FIMEMORY *mem =      FreeImage_OpenMemory(reinterpret_cast<BYTE *>(data), ba.size());  FREE_IMAGE_FORMAT fif = FreeImage_GetFileTypeFromMemory(mem, 0);  if (fif == FIF_UNKNOWN) {    FreeImage_CloseMemory(mem);    throw std::runtime_error("Image format is not supported for loading");  }  FIBITMAP *bmp = FreeImage_LoadFromMemory(fif, mem, 0);  FreeImage_CloseMemory(mem);  if (!bmp) {    throw std::runtime_error("Failed to decode image");  }  FIBITMAP *converted = FreeImage_ConvertTo24Bits(bmp);  FreeImage_Unload(bmp);  if (!converted) {    throw std::runtime_error("Failed to convert image to 24 bit");  }  const unsigned w = FreeImage_GetWidth(converted);  const unsigned h = FreeImage_GetHeight(converted);  const unsigned data_size = w * h * 3;  BYTE *image_data = FreeImage_GetBits(converted);  ROS_INFO("Loading a %u x %u texture", w, h);  //  create texture  Ogre::TexturePtr texture;  try {    Ogre::DataStreamPtr data_stream;    data_stream.bind(new Ogre::MemoryDataStream(image_data, data_size));    const Ogre::String res_group =        Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME;    Ogre::TextureManager &texture_manager =        Ogre::TextureManager::getSingleton();    texture =        texture_manager.loadRawData(name, res_group, data_stream, w, h,                                    Ogre::PF_R8G8B8, Ogre::TEX_TYPE_2D, 0);  }  catch (...) {    //  clean up FreeImage before re-throwing    FreeImage_Unload(converted);    throw;  }  return texture;}
开发者ID:Exchizz,项目名称:rviz_satellite,代码行数:56,


示例25: Resource

	CMImage::CMImage(char* name) : Resource(name)	{		FREE_IMAGE_FORMAT formato = FreeImage_GetFIFFromFilename(name);		FIBITMAP* imagen = FreeImage_Load(formato, name);		_name = name;		_width = FreeImage_GetWidth(imagen);		_height = FreeImage_GetHeight(imagen);		void* pixeles = (void*)FreeImage_GetBits(imagen);		FREE_IMAGE_TYPE a = FreeImage_GetImageType(imagen);		assert(a == FIT_BITMAP);		unsigned int bitDepth= FreeImage_GetBPP(imagen);		assert(bitDepth == 24 || bitDepth == 32 || bitDepth == 48);		_pixelData = pixeles;		switch (bitDepth)		{		case 24:					_imageFormat = GL_BGR;			break;		case 32:			_imageFormat = GL_BGRA;			break;		case 48:			_imageFormat = GL_BGRA;			break;		}		glGenTextures(1, &_textureId);//generates texture		glBindTexture(GL_TEXTURE_2D, _textureId);		glTexImage2D(			GL_TEXTURE_2D, 0, 4, _width,			_height, 0, _imageFormat,			GL_UNSIGNED_BYTE, FreeImage_GetBits(imagen)			);		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);		glBindTexture(GL_TEXTURE_2D, 0u);		FreeImage_Unload(imagen);	}
开发者ID:ChiefCashier,项目名称:CancerMotor,代码行数:43,


示例26: texture

/*	Loads a texture froma file to be applied to the terrain	@param the path to the texture file	@return whether or not the file was loaded correctly*/bool Ground::loadGroundTexture(string path) {	FREE_IMAGE_FORMAT fif = FIF_UNKNOWN;	FIBITMAP* texture(0);	fif = FreeImage_GetFileType(path.c_str(), 0);	if (fif == FIF_UNKNOWN) { // Unknown file type		//std::cout << "Unknown Filetype/n";		fif = FreeImage_GetFIFFromFilename(path.c_str());	}	if (fif == FIF_UNKNOWN) { // Still unkown file type		std::cout << "Unknown Filetype/n";		return false;	}	if (FreeImage_FIFSupportsReading(fif)) { // is the file supported by free image?		texture = FreeImage_Load(fif, path.c_str());	}	if (!texture) {		std::cout << "This file type is not supported by FreeImage/n";		return false;	}	BYTE* dataPointer = FreeImage_GetBits(texture);	textureWidth = FreeImage_GetWidth(texture);	textureHeight = FreeImage_GetHeight(texture);	textureBPP = FreeImage_GetBPP(texture);	glGenTextures(1, &textureID);	glBindTexture(GL_TEXTURE_2D, textureID);		int format = textureBPP == 24 ? GL_BGR : textureBPP == 8 ? GL_LUMINANCE : 0;	int internalFormat = textureBPP == 24 ? GL_BGR : GL_DEPTH_COMPONENT;			glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, textureWidth, textureHeight, 0, format, GL_UNSIGNED_BYTE, dataPointer);	glGenerateMipmap(GL_TEXTURE_2D);		FreeImage_Unload(texture);	glGenSamplers(1, &samplerID);	texturePath = path;	// Tri linear filtering	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); 	glGenerateMipmap(GL_TEXTURE_2D);	return true;}
开发者ID:hipblip,项目名称:OutdoorScene,代码行数:60,


示例27: FreeImage_GetFileType

bool CTexture::Load(const char* texPath){	//if we already load texture, you have to delete previous...	if (TextureId != NULL) glDeleteTextures(1, &TextureId);	FREE_IMAGE_FORMAT format = FreeImage_GetFileType(texPath, 0);	FIBITMAP* image = FreeImage_Load(format, texPath);	if (format == FIF_UNKNOWN){		std::cout << "unknown texture format: file " << texPath << std::endl;		return false;	};	FIBITMAP* temp = image;	image = FreeImage_ConvertTo32Bits(image);	FreeImage_Unload(temp);	int w = FreeImage_GetWidth(image);	int h = FreeImage_GetHeight(image);	char* bits = (char*)FreeImage_GetBits(image);	// OpenGL stuff	/* TODO: Texture settings */	glGenTextures(1, &TextureId);	glBindTexture(GL_TEXTURE_2D, TextureId);	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_BGRA, GL_UNSIGNED_BYTE, (GLvoid*)bits);	/* Generate Mipmap */	glGenerateMipmap(GL_TEXTURE);	//glGenerateTextureMipmapEXT(TextureId);	//glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);	//glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);	//glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST_MIPMAP_NEAREST);	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);	GLfloat fLargest;	glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &fLargest);	//glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, fLargest);	GLenum Error = glGetError();	if (Error){		std::cerr << "There was an error loading the texture" << std::endl;		return false;	}	return true;}
开发者ID:witczenko,项目名称:MiniGame,代码行数:55,


示例28: putBmpIntoPixels

void putBmpIntoPixels(FIBITMAP * bmp, ofPixels_<PixelType> &pix, bool swapForLittleEndian = true) {	// convert to correct type depending on type of input bmp and PixelType	FIBITMAP* bmpConverted = NULL;	FREE_IMAGE_TYPE imgType = FreeImage_GetImageType(bmp);	if(sizeof(PixelType)==1 &&		(FreeImage_GetColorType(bmp) == FIC_PALETTE || FreeImage_GetBPP(bmp) < 8		||  imgType!=FIT_BITMAP)) {		if(FreeImage_IsTransparent(bmp)) {			bmpConverted = FreeImage_ConvertTo32Bits(bmp);		} else {			bmpConverted = FreeImage_ConvertTo24Bits(bmp);		}		bmp = bmpConverted;	}else if(sizeof(PixelType)==2 && imgType!=FIT_UINT16 && imgType!=FIT_RGB16 && imgType!=FIT_RGBA16){		if(FreeImage_IsTransparent(bmp)) {			bmpConverted = FreeImage_ConvertToType(bmp,FIT_RGBA16);		} else {			bmpConverted = FreeImage_ConvertToType(bmp,FIT_RGB16);		}		bmp = bmpConverted;	}else if(sizeof(PixelType)==4 && imgType!=FIT_FLOAT && imgType!=FIT_RGBF && imgType!=FIT_RGBAF){		if(FreeImage_IsTransparent(bmp)) {			bmpConverted = FreeImage_ConvertToType(bmp,FIT_RGBAF);		} else {			bmpConverted = FreeImage_ConvertToType(bmp,FIT_RGBF);		}		bmp = bmpConverted;	}	unsigned int width = FreeImage_GetWidth(bmp);	unsigned int height = FreeImage_GetHeight(bmp);	unsigned int bpp = FreeImage_GetBPP(bmp);	unsigned int channels = (bpp / sizeof(PixelType)) / 8;	unsigned int pitch = FreeImage_GetPitch(bmp);	// ofPixels are top left, FIBITMAP is bottom left	FreeImage_FlipVertical(bmp);		unsigned char* bmpBits = FreeImage_GetBits(bmp);	if(bmpBits != NULL) {		pix.setFromAlignedPixels((PixelType*) bmpBits, width, height, channels, pitch);	} else {		ofLogError("ofImage") << "putBmpIntoPixels(): unable to set ofPixels from FIBITMAP";	}		if(bmpConverted != NULL) {		FreeImage_Unload(bmpConverted);	}#ifdef TARGET_LITTLE_ENDIAN	if(swapForLittleEndian && sizeof(PixelType) == 1) {		pix.swapRgb();	}#endif}
开发者ID:B-IT,项目名称:openFrameworks,代码行数:55,



注:本文中的FreeImage_GetBits函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ FreeImage_GetColorType函数代码示例
C++ FreeImage_GetBPP函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。