[Visual C++] Enregistrer un CBitmap en JPEG grace à GFLSDK ?

Discussions on GFL SDK, the graphic library for reading and writing graphic files

Moderators: helmut, XnTriq, xnview

Post Reply
_Air_

[Visual C++] Enregistrer un CBitmap en JPEG grace à GFLSDK ?

Post by _Air_ »

Bonjour,

je souhaitre enregistrer un CBitmap ( class MFC ) en JPEG grace à la GFL. Après de multiples tentatives et recherche sur le forum je me retrouve sans cesse avec GFL_ERROR = 10 ( i.e. GFL_ERROR_BAD_FORMAT_INDEX), lorsque j'appelle la fonction GFLC_BITMAP::saveIntoFile(...). :?

Code: Select all

BOOL CGraph::WriteJpg(CString strPath, int iQuality)
{
	BOOL bReturn = FALSE;

	GFLC_SAVE_PARAMS gflParams;

	gflParams.setFormat(gflGetFormatIndexByName("jpeg")); // renvoit toujours -1 :|
	gflParams.setQuality((GFL_INT16) Quality); 
	gflParams.setFlags(GFL_SAVE_ANYWAY);
	gflParams.setProgressive(GFL_FALSE);
	
	HBITMAP hBmp = (HBITMAP) this->GetSafeHandle();
	GFLC_BITMAP * pGflBmp = new GFLC_BITMAP();

	GFL_ERROR gflError = pGflBmp->create(GFL_RGB, this->width, this->height); 
	if(gflError == GFL_NO_ERROR)
	{
		gflError = pGflBmp->setHBITMAP(&hBmp); // [*]
		if(gflError == GFL_NO_ERROR)
		{
			gflError = pGflBmp->saveIntoFile(strPath.GetBuffer(), gflParams);
			if(gflError == GFL_NO_ERROR)
			{
				bReturn = TRUE;
			}
		}
	}
	if(gflError != GFL_NO_ERROR)
	{
		CString strMsg;
		strMsg.Format("Erreur lors de la Sauvegarde en JPEG :\n%s", gflGetErrorString(gflError));
		AfxMessageBox(strMsg, MB_OK | MB_ICONINFORMATION);
	}
	delete pGflBmp;

	return bReturn;
}

Code: Select all

[*]Code associé : 

inline GFL_ERROR GFLC_BITMAP::setHBITMAP(HBITMAP * hFrame)
{
	ERROR_Check(m_gflBitmap, ""); 
	return gflConvertDDBIntoBitmap(*hFrame, &m_gflBitmap);
}
A priori la fonction gflConvertDDBIntoBitmap fonctionne puisqu'elle renvoit systématiquement GFL_NO_ERROR.

Merci pour votre aide.

PS : la gfl est vraiment impressionante bravo pour le travail accompli !
_Air_

Post by _Air_ »

J'ai oublié de préciser que j'utilise la version 2.40 du GFLSDK.

Petites questions :
Que signifit le message d'erreur ? GFL_ERROR_BAD_FORMAT_INDEX a-t-il un rapport avec GFL_SAVE_PARAMS.FormatIndex ?

Merci pour votre aide :D
User avatar
Ithier
Posts: 47
Joined: Fri Nov 19, 2004 10:50 am
Location: Paris, France
Contact:

Post by Ithier »

Bonjour,

Evidemment si gflGetFormatIndexByName("jpeg") renvoie toujours -1, il est normal d'avoir l'erreur.
J'ai réussi à reproduire cette erreur si je n'appelle pas la fonction gflLibraryInit() au début du programme. Cela doit être cette ligne qui manque.

Sur mon poste, gflGetFormatIndexByName("jpeg") renvoye 0.

Bon courage
Post Reply