freeimage.h
FreeImage_FIFSupportsExportBPP
1 4 8 16 24 32
DLL_API BOOL DLL_CALLCONV FreeImage_FIFSupportsExportBPP(FREE_IMAGE_FORMAT fif, int bpp);
Retorna TRUE si el plugin perteneciente al FREE_IMAGE_FORMAT dado puede guardar un mapa de bits con la profundidad de bits deseada, FALSE en caso contrario.
/** Builds a series of string pairs that specify filters you can apply to save a file. The filter string is to be used by a 'File Save As' dialog box (GetSaveFileName or CFileDialog). @param szFilter Input and output parameters. szFilter is an array of char whose length should be 2048 or more. @param bpp The bit depth of the image to be saved. @param image_type The image type to be saved @return Return the number of supported export formats */ int GetSaveAsFilterString(char *szFilter, WORD bpp, FREE_IMAGE_TYPE image_type) { int i, iCount; char Filter[2048]; char *token; szFilter[0] = '\0'; iCount = 0; // Build a string for each format for(i = 0; i < FreeImage_GetFIFCount(); i++) { // Check that the dib can be saved in this format BOOL bCanSave; FREE_IMAGE_FORMAT fif = (FREE_IMAGE_FORMAT)i; if(image_type == FIT_BITMAP) { // standard bitmap type bCanSave = (FreeImage_FIFSupportsWriting(fif) && FreeImage_FIFSupportsExportBPP(fif, bpp)); } else { // special bitmap type bCanSave = FreeImage_FIFSupportsExportType(fif, image_type); } if(bCanSave) { // Handle the special case of PNM files strcpy(Filter, FreeImage_GetFormatFromFIF((FREE_IMAGE_FORMAT)i)); if((bpp == 1) & & (!strncmp(Filter, "PGM", 3) || !strncmp(Filter, "PPM", 3))) continue; if((bpp == 8) & & (!strncmp(Filter, "PBM", 3) || !strncmp(Filter, "PPM", 3))) continue; if((bpp == 24) & & (!strncmp(Filter, "PGM", 3) || !strncmp(Filter, "PBM", 3))) continue; // Description sprintf(Filter, "%s (%s)|", FreeImage_GetFIFDescription((FREE_IMAGE_FORMAT)i), FreeImage_GetFIFExtensionList((FREE_IMAGE_FORMAT)i)); strcat(szFilter, Filter); // Extension(s) strcpy(Filter, FreeImage_GetFIFExtensionList((FREE_IMAGE_FORMAT)i)); token = strtok(Filter, ","); while(token != NULL) { strcat(szFilter, "*."); strcat(szFilter, token); strcat(szFilter, ";"); // get next token token = strtok(NULL, ","); } szFilter[strlen(szFilter)-1] = '|'; iCount++; } } strcat(szFilter, "|"); return iCount; }