Questione : Convertire l'immagine in png trasparente 8bit nella rete del puntino

Sto usando il DLL di FreeImage per generare il png trasparente 8bpp. Ho convinto il seguente codice per convertire l'immagine in C++ using il class= " lineNumbers " >
1 del >

#include “FreeImage.h„
conduttura di int (argc di int, argv del char* []) {
FIBITMAP *hDIB24bpp = FreeImage_Load (FIF_BMP, “test.bmp„, 0);
se (hDIB24bpp) {
// colore-quantifica 24bpp (risultati in una bitmap 8bpp per regolare acetato)
FIBITMAP *hDIB8bpp = FreeImage_ColorQuantize (hDIB24bpp, FIQ_WUQUANT);
// ottiene la gamma di colori e trova verde intenso
*Palette di RGBQUAD = FreeImage_GetPalette (hDIB8bpp);
Acetato di BYTE [256];
per (senza firma i = 0; i < 256; i++) {
Acetato [i] = 0xFF;
se (&& del >= 0xFE della gamma di colori [i] .rgbGreen
&& del == 0x00 della gamma di colori [i] .rgbBlue
== 0x00 della gamma di colori [i] .rgbRed) {
Acetato [i] = 0x00;
}
}
// ha regolato la tabella di trasparenza
FreeImage_SetTransparencyTable (hDIB8bpp, acetato, 256);
// conserva l'immagine 8bpp come png trasparente
FreeImage_Save (FIF_PNG, hDIB8bpp, “test.png„, 0);
FreeImage_Unload (hDIB24bpp);
FreeImage_Unload (hDIB8bpp);
}
ritorno 0;
} class= >


After di
di errore “non può convertire implicitamente il tipo “System.IntPtr„ 'a FreeImageAPI.RGBQUAD„ in questo gamma di colori di RGBQUAD del line
" = FreeImage.GetPalette (hDIB8bpp); „. Mentre lo stesso codice è dato nel class= " i lineNumbers " >
1 del >

FIBITMAP hDIB24bpp = FreeImage.Load (FREE_IMAGE_FORMAT.FIF_JPEG, “C: /Sunset.jpg„, 0);
            FIBITMAP hDIB8bpp = FreeImage.ColorQuantize (hDIB24bpp, FREE_IMAGE_QUANTIZE.FIQ_WUQUANT);
            Gamma di colori di RGBQUAD = FreeImage.GetPalette (hDIB8bpp);
            acetato di byte [] = nuovo byte [256];
            per (int i = 0; i < 256; i++)
            {
                acetato [i] = 0xFF;
                se (&& del >= 0xFE della gamma di colori [i] .rgbGreen
                && del == 0x00 della gamma di colori [i] .rgbBlue
                == 0x00 della gamma di colori [i] .rgbRed)
                {
                    acetato [i] = 0x00;
                }
            } class= >
" libero " di
class= del

Risposta : Convertire l'immagine in png trasparente 8bit nella rete del puntino

Provare questo codice per ottenere i dati reali di RGBQUAD.
1:
2:
*pPalette di RGBQUAD = FreeImage.GetPalette (hDIB8bpp);
Gamma di colori = *pPalette di RGBQUAD;
Altre soluzioni  
 
programming4us programming4us