FAQ TBarCode DLL / TBarCode Library
Comment enregistrer un bitmap en mémoire
Comment enregistrer un bitmap en mémoire
Voici un exemple de code montrant comment utiliser BCSaveImageToBuffer :
#include "windowsx.h"
// after BCCreate(..)
// generate image in buffer
LPBYTE lpBuffer;
eCode = BCSaveImageToBuffer (pBarCode, &lpBuffer, eIMBmp, nWidth, nHeight, 96.0, 96.0);
if (eCode == ErrOk)
{
// lock buffer before reading
if (GlobalLockPtr(lpBuffer))
{
// retrieve size of buffer
int nSize = GlobalSize((HGLOBAL)GlobalHandle(lpBuffer));
// process buffer
for (int i=0; i< nSize; i++)
{
BYTE byte = (static_cast<LPBYTE> (lpBuffer))[i];
// ...
}
// unlock after reading (required)
GlobalUnlockPtr(lpBuffer);
}
// free memory (required)
GlobalFreePtr(lpBuffer);
}
Fonctions API alternatives
ERRCODE BCBitmapToMemory (t_BarCode *pBarCode, VOID *pHandle, LPCSTR pszFormat,
INT *pnSize, LPCRECT pRect)
Écrit le code-barres dans un format d'image vers un bloc mémoire. Ne nécessite pas de mémoire de tas globale (= plus rapide) mais ne rend pas le texte lisible (HRT).
Même si vous utilisez une séquence d'échappement pour des données binaires, l'encodeur utilisera une conversion de page de codes (exemple : \x88 conduit à une valeur différente dans Data Matrix par rapport à celle souhaitée).
Solution :
- Désactivez la conversion de page de codes (utilisez le mode d'encodage LowByte)
- Forcez le mode d'encodage binaire si disponible (voir le mode d'encodage PDF417, Data Matrix EnforceBinaryEncoding)
Pertinent pour DP Premium Address et d'autres applications où vous encodez des données binaires dans un symbole 2D (Data Matrix, etc.).