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

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

Moderators: XnTriq, helmut, xnview

_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

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