Question : Convertir l'image en png 8bit transparent dans le filet de point

J'emploie le DLL de FreeImage pour créer png 8bpp transparent. J'ai obtenu le code suivant pour convertir l'image dans C++ using le class= les " lineNumbers " >
1 de >

#include « FreeImage.h »
force d'international (argc d'international, argv de char* []) {
FIBITMAP *hDIB24bpp = FreeImage_Load (FIF_BMP, « test.bmp », 0) ;
si (hDIB24bpp) {
// couleur-quantifient 24bpp (les résultats dans une carte binaire 8bpp pour placer le transparent)
FIBITMAP *hDIB8bpp = FreeImage_ColorQuantize (hDIB24bpp, FIQ_WUQUANT) ;
// obtiennent la palette et trouvent vert clair
*Palette de RGBQUAD = FreeImage_GetPalette (hDIB8bpp) ;
Transparent de BYTE [256] ;
pour (non signé I = 0 ; i < 256 ; i++) {
Transparent [I] = 0xFF ;
si (&& de >= 0xFE de palette [I] .rgbGreen
&& du == 0x00 de la palette [I] .rgbBlue
== 0x00 de la palette [I] .rgbRed) {
Transparent [I] = 0x00 ;
}
}
// a mis la table de transparence
FreeImage_SetTransparencyTable (hDIB8bpp, transparent, 256) ;
// sauvent l'image 8bpp en tant que png transparent
FreeImage_Save (FIF_PNG, hDIB8bpp, « test.png », 0) ;
FreeImage_Unload (hDIB24bpp) ;
FreeImage_Unload (hDIB8bpp) ;
}
retour 0 ;
} class= >



After de
d'erreur « ne peut pas implicitement convertir le type « System.IntPtr » à 'FreeImageAPI.RGBQUAD » dans ce palette de RGBQUAD du line
" = FreeImage.GetPalette (hDIB8bpp) ;  ». Tandis que le même code est donné dans le class= les " lineNumbers " >
1 de >

FIBITMAP hDIB24bpp = FreeImage.Load (FREE_IMAGE_FORMAT.FIF_JPEG, « C : /Sunset.jpg », 0) ;
            FIBITMAP hDIB8bpp = FreeImage.ColorQuantize (hDIB24bpp, FREE_IMAGE_QUANTIZE.FIQ_WUQUANT) ;
            Palette de RGBQUAD = FreeImage.GetPalette (hDIB8bpp) ;
            transparent de byte [] = nouveau byte [256] ;
            pour (international i = 0 ; i < 256 ; i++)
            {
                transparent [I] = 0xFF ;
                si (&& de >= 0xFE de palette [I] .rgbGreen
                && du == 0x00 de la palette [I] .rgbBlue
                == 0x00 de la palette [I] .rgbRed)
                {
                    transparent [I] = 0x00 ;
                }
            } class= >
" clair " de
class= de

Réponse : Convertir l'image en png 8bit transparent dans le filet de point

Essayer ce code pour obtenir les données réelles de RGBQUAD.
1 :
2 :
*pPalette de RGBQUAD = FreeImage.GetPalette (hDIB8bpp) ;
Palette = *pPalette de RGBQUAD ;
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us