annuncio

Comprimi
Ancora nessun annuncio.

Programmazione & Co....

Comprimi
X
 
  • Filtro
  • Ora
  • Visualizza
Elimina tutto
nuovi messaggi

  • #81
    Re: Programmazione & Co....

    mi serve una mano....devo leggere una bitmap in formato esadecimale qualcuno mi puo aiutare?
    A.T.C. - Ancona Tuning Club - Socio n°6
    ** Club Tuning 2 Monti **
    Club dei CORTOCIRCUITI member N°5
    La mia piccola:clicca qui nuove foto
    Forum:tiburon drivers team forum
    Sito:tiburon drivers team

    Commenta


    • #82
      Re: Programmazione & Co....

      problema risolto nn so se è il metodo piu bello però funziona

      ma se a qualcuno interessa metto il codice

      codice:
      CString WINAPI ReadDIBFileHex(CFile& file)
      {
      	BITMAPFILEHEADER bmfHeader;
      	DWORD dwBitsSize;
      	HDIB hDIB;
      	LPSTR pDIB;
      	CString BitMapHex = "";
      
      	/*
      	 * get length of DIB in bytes for use when reading
      	 */
      
      	dwBitsSize = file.GetLength();
      
      	/*
      	 * Go read the DIB file header and check if it's valid.
      	 */
      	if (file.Read((LPSTR)&bmfHeader, sizeof(bmfHeader)) != sizeof(bmfHeader))
      		return "";
      
      	if (bmfHeader.bfType != DIB_HEADER_MARKER)
      		return "";
      
      	/*
      	 * Allocate memory for DIB
      	 */
      	hDIB = (HDIB) ::GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, dwBitsSize);
      	if (hDIB == 0)
      	{
      		return "";
      	}
      	pDIB = (LPSTR) ::GlobalLock((HGLOBAL) hDIB);
      
      	/*
      	 * Go read the bits.
      	 */
      
      	if (file.ReadHuge(pDIB, dwBitsSize - sizeof(BITMAPFILEHEADER)) !=
      		dwBitsSize - sizeof(BITMAPFILEHEADER) )//sizeof(BITMAPFILEHEADER) = 14
      	{
      		::GlobalUnlock((HGLOBAL) hDIB);
      		::GlobalFree((HGLOBAL) hDIB);
      		return "";
      	}
      	
      	int Larghezza	= (int) ::DIBWidth(pDIB);
      	int Altezza		= (int) ::DIBHeight(pDIB);
      	
      	//prendo la potenza di due che puo contenere la riga della bitmap
      	double Valore = 0;
      	double Esponente = 0;
      	while(true)
      	{
      		Valore = pow(2,Esponente);
      		if((int)Valore >= Larghezza)
      			break;
      		Esponente++;
      	}
      
      	//Intestazione comando
      	BitMapHex.Format("~DGE:%s,%0.5d,%0.3d,","SAMPLE",Altezza * ((int)Valore/8),(int)Valore/8);
      
      	//conversione e formattazione bitmap in esadecimale
      	for(int i = Altezza; i > 0; i --)//leggo le righe dall'ultima alla prima
      	{
      		for(int j = 0; j < Valore/8; j++)//ciclo sui byte di ogni riga (1 byte ha 8 pixel)
      		{
      			unsigned char c = pDIB[j + (bmfHeader.bfOffBits - sizeof(bmfHeader)) + (i * ((int)Valore/8))];
      			c = ~c;//inverto il valore dei bit nel byte, la zebra vuole i valori invertiti ( 0 = bianco e F = nero)
      			int val = c;
      			CString ByteBitMapHex;
      			ByteBitMapHex.Format("%0.2x",val);//converto il valore in esadecimale
      			BitMapHex += ByteBitMapHex;
      		}
      	}
      
      	::GlobalUnlock((HGLOBAL) hDIB);
      	return BitMapHex;
      }
      A.T.C. - Ancona Tuning Club - Socio n°6
      ** Club Tuning 2 Monti **
      Club dei CORTOCIRCUITI member N°5
      La mia piccola:clicca qui nuove foto
      Forum:tiburon drivers team forum
      Sito:tiburon drivers team

      Commenta


      • #83
        Re: Programmazione &amp; Co....

        che fa questo sopra?
        e soprattutto che linguaggio è?

        questa volta 206
        una peugeot è per sempre
        ____|2_FAST_4_U|____
        AnAcApItO tE pOsSo Di ChE hO vIsTo PiSkElLi...

        Commenta


        • #84
          Re: Programmazione &amp; Co....

          Originariamente inviato da thewolf Visualizza il messaggio
          che fa questo sopra?
          e soprattutto che linguaggio è?
          allora è visual C++ (ma cmq molte sono funzioni SDK sempre C++)

          cmq sta funzione prende come parametro un file bitmap (CFile &file) aperto in precedenza......dopo di che legge i byte e li converti in formato esadecimale formanttandoli in una stringa
          A.T.C. - Ancona Tuning Club - Socio n°6
          ** Club Tuning 2 Monti **
          Club dei CORTOCIRCUITI member N°5
          La mia piccola:clicca qui nuove foto
          Forum:tiburon drivers team forum
          Sito:tiburon drivers team

          Commenta

          Sto operando...