FAQ TBarCode DLL / TBarCode Library
Come posso salvare una bitmap in memoria
Come posso salvare una bitmap in memoria
Di seguito un esempio di codice su come usare 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);
}
Funzioni API alternative
ERRCODE BCBitmapToMemory (t_BarCode *pBarCode, VOID *pHandle, LPCSTR pszFormat,
INT *pnSize, LPCRECT pRect)
Scrive il codice a barre in un blocco di memoria in un formato immagine. Non richiede memoria heap globale (= più veloce) ma non esegue il rendering dell'HRT.
Anche se utilizzate una sequenza di escape per dati binari, l'encoder utilizzerà comunque la conversione della code page (esempio: \x88 porta a un valore diverso in Data Matrix rispetto a quanto desiderato).
Soluzione:
- Disattivate la conversione della code page (usate la modalità di codifica LowByte)
- Forzate la modalità di codifica binaria se disponibile (vedere la modalità di codifica PDF417, Data Matrix EnforceBinaryEncoding)
Rilevante per DP Premium Address e altre applicazioni in cui si codificano dati binari in un simbolo 2D (Data Matrix ecc.).