New Member

Group: Members
Posts: 7
Member No.: 150
Joined: 20-June 04

|
Well I required to convert a BMP to a JPEG tried different approaches and this one actually worked, I'm sure someone may want to use some of the advance features of the library so I created this include that exports all the functions and declares most of the constants may update it with the custom structures in the future.
| CODE | .const ; TYPES FIF_UNKNOWN equ -1 FIF_BMP equ 0 FIF_ICO equ 1 FIF_JPEG equ 2 FIF_JNG equ 3 FIF_KOALA equ 4 FIF_LBM equ 5 FIF_IFF equ FIF_LBM FIF_MNG equ 6 FIF_PBM equ 7 FIF_PBMRAW equ 8 FIF_PCD equ 9 FIF_PCX equ 10 FIF_PGM equ 11 FIF_PGMRAW equ 12 FIF_PNG equ 13 FIF_PPM equ 14 FIF_PPMRAW equ 15 FIF_RAS equ 16 FIF_TARGA equ 17 FIF_TIFF equ 18 FIF_WBMP equ 19 FIF_PSD equ 20 FIF_CUT equ 21 FIF_XBM equ 22 FIF_XPM equ 23 FIF_DDS equ 24 FIF_GIF equ 25 FIF_HDR equ 26 FIF_FAXG3 equ 27 FIF_SGI equ 28 FIF_EXR equ 29 FIF_J2K equ 30 FIF_JP2 equ 31
;RESIZE FILTERS FILTER_BOX equ 0; Box, pulse, Fourier window, 1st order (constant) b-spline FILTER_BICUBIC equ 1; Mitchell & Netravali's two-param cubic filter FILTER_BILINEAR equ 2; Bilinear filter FILTER_BSPLINE equ 3; 4th order (cubic) b-spline FILTER_CATMULLROM equ 4; Catmull-Rom spline, Overhauser spline FILTER_LANCZOS3 equ 5
.data strFreeImage db 'FreeImage.dll', 0h
.data? FreeImage dd ? FreeImage_AcquireMemory dd ? FreeImage_AdjustBrightness dd ? FreeImage_AdjustColors dd ? FreeImage_AdjustContrast dd ? FreeImage_AdjustCurve dd ? FreeImage_AdjustGamma dd ? FreeImage_Allocate dd ? FreeImage_AllocateT dd ? FreeImage_AppendPage dd ? FreeImage_ApplyColorMapping dd ? FreeImage_ApplyPaletteIndexMapping dd ? FreeImage_Clone dd ? FreeImage_CloneTag dd ? FreeImage_CloseMemory dd ? FreeImage_CloseMultiBitmap dd ? FreeImage_ColorQuantize dd ? FreeImage_ColorQuantizeEx dd ? FreeImage_Composite dd ? FreeImage_ConvertFromRawBits dd ? FreeImage_ConvertLine16To24_555 dd ? FreeImage_ConvertLine16To24_565 dd ? FreeImage_ConvertLine16To32_555 dd ? FreeImage_ConvertLine16To32_565 dd ? FreeImage_ConvertLine16To4_555 dd ? FreeImage_ConvertLine16To4_565 dd ? FreeImage_ConvertLine16To8_555 dd ? FreeImage_ConvertLine16To8_565 dd ? FreeImage_ConvertLine16_555_To16_565 dd ? FreeImage_ConvertLine16_565_To16_555 dd ? FreeImage_ConvertLine1To16_555 dd ? FreeImage_ConvertLine1To16_565 dd ? FreeImage_ConvertLine1To24 dd ? FreeImage_ConvertLine1To32 dd ? FreeImage_ConvertLine1To4 dd ? FreeImage_ConvertLine1To8 dd ? FreeImage_ConvertLine24To16_555 dd ? FreeImage_ConvertLine24To16_565 dd ? FreeImage_ConvertLine24To32 dd ? FreeImage_ConvertLine24To4 dd ? FreeImage_ConvertLine24To8 dd ? FreeImage_ConvertLine32To16_555 dd ? FreeImage_ConvertLine32To16_565 dd ? FreeImage_ConvertLine32To24 dd ? FreeImage_ConvertLine32To4 dd ? FreeImage_ConvertLine32To8 dd ? FreeImage_ConvertLine4To16_555 dd ? FreeImage_ConvertLine4To16_565 dd ? FreeImage_ConvertLine4To24 dd ? FreeImage_ConvertLine4To32 dd ? FreeImage_ConvertLine4To8 dd ? FreeImage_ConvertLine8To16_555 dd ? FreeImage_ConvertLine8To16_565 dd ? FreeImage_ConvertLine8To24 dd ? FreeImage_ConvertLine8To32 dd ? FreeImage_ConvertLine8To4 dd ? FreeImage_ConvertTo16Bits555 dd ? FreeImage_ConvertTo16Bits565 dd ? FreeImage_ConvertTo24Bits dd ? FreeImage_ConvertTo32Bits dd ? FreeImage_ConvertTo4Bits dd ? FreeImage_ConvertTo8Bits dd ? FreeImage_ConvertToGreyscale dd ? FreeImage_ConvertToRGBF dd ? FreeImage_ConvertToRawBits dd ? FreeImage_ConvertToStandardType dd ? FreeImage_ConvertToType dd ? FreeImage_Copy dd ? FreeImage_CreateICCProfile dd ? FreeImage_CreateTag dd ? FreeImage_DeInitialise dd ? FreeImage_DeletePage dd ? FreeImage_DeleteTag dd ? FreeImage_DestroyICCProfile dd ? FreeImage_Dither dd ? FreeImage_FIFSupportsExportBPP dd ? FreeImage_FIFSupportsExportType dd ? FreeImage_FIFSupportsICCProfiles dd ? FreeImage_FIFSupportsReading dd ? FreeImage_FIFSupportsWriting dd ? FreeImage_FindCloseMetadata dd ? FreeImage_FindFirstMetadata dd ? FreeImage_FindNextMetadata dd ? FreeImage_FlipHorizontal dd ? FreeImage_FlipVertical dd ? FreeImage_GetAdjustColorsLookupTable dd ? FreeImage_GetBPP dd ? FreeImage_GetBackgroundColor dd ? FreeImage_GetBits dd ? FreeImage_GetBlueMask dd ? FreeImage_GetChannel dd ? FreeImage_GetColorType dd ? FreeImage_GetColorsUsed dd ? FreeImage_GetComplexChannel dd ? FreeImage_GetCopyrightMessage dd ? FreeImage_GetDIBSize dd ? FreeImage_GetDotsPerMeterX dd ? FreeImage_GetDotsPerMeterY dd ? FreeImage_GetFIFCount dd ? FreeImage_GetFIFDescription dd ? FreeImage_GetFIFExtensionList dd ? FreeImage_GetFIFFromFilename dd ? FreeImage_GetFIFFromFilenameU dd ? FreeImage_GetFIFFromFormat dd ? FreeImage_GetFIFFromMime dd ? FreeImage_GetFIFMimeType dd ? FreeImage_GetFIFRegExpr dd ? FreeImage_GetFileType dd ? FreeImage_GetFileTypeFromHandle dd ? FreeImage_GetFileTypeFromMemory dd ? FreeImage_GetFileTypeU dd ? FreeImage_GetFormatFromFIF dd ? FreeImage_GetGreenMask dd ? FreeImage_GetHeight dd ? FreeImage_GetHistogram dd ? FreeImage_GetICCProfile dd ? FreeImage_GetImageType dd ? FreeImage_GetInfo dd ? FreeImage_GetInfoHeader dd ? FreeImage_GetLine dd ? FreeImage_GetLockedPageNumbers dd ? FreeImage_GetMetadata dd ? FreeImage_GetMetadataCount dd ? FreeImage_GetPageCount dd ? FreeImage_GetPalette dd ? FreeImage_GetPitch dd ? FreeImage_GetPixelColor dd ? FreeImage_GetPixelIndex dd ? FreeImage_GetRedMask dd ? FreeImage_GetScanLine dd ? FreeImage_GetTagCount dd ? FreeImage_GetTagDescription dd ? FreeImage_GetTagID dd ? FreeImage_GetTagKey dd ? FreeImage_GetTagLength dd ? FreeImage_GetTagType dd ? FreeImage_GetTagValue dd ? FreeImage_GetTransparencyCount dd ? FreeImage_GetTransparencyTable dd ? FreeImage_GetTransparentIndex dd ? FreeImage_GetVersion dd ? FreeImage_GetWidth dd ? FreeImage_HasBackgroundColor dd ? FreeImage_Initialise dd ? FreeImage_InsertPage dd ? FreeImage_Invert dd ? FreeImage_IsLittleEndian dd ? FreeImage_IsPluginEnabled dd ? FreeImage_IsTransparent dd ? FreeImage_JPEGCrop dd ? FreeImage_JPEGTransform dd ? FreeImage_Load dd ? FreeImage_LoadFromHandle dd ? FreeImage_LoadFromMemory dd ? FreeImage_LoadMultiBitmapFromMemory dd ? FreeImage_LoadU dd ? FreeImage_LockPage dd ? FreeImage_LookupSVGColor dd ? FreeImage_LookupX11Color dd ? FreeImage_MakeThumbnail dd ? FreeImage_MovePage dd ? FreeImage_MultigridPoissonSolver dd ? FreeImage_OpenMemory dd ? FreeImage_OpenMultiBitmap dd ? FreeImage_OutputMessageProc dd ? FreeImage_Paste dd ? FreeImage_PreMultiplyWithAlpha dd ? FreeImage_ReadMemory dd ? FreeImage_RegisterExternalPlugin dd ? FreeImage_RegisterLocalPlugin dd ? FreeImage_Rescale dd ? FreeImage_RotateClassic dd ? FreeImage_RotateEx dd ? FreeImage_Save dd ? FreeImage_SaveToHandle dd ? FreeImage_SaveToMemory dd ? FreeImage_SaveU dd ? FreeImage_SeekMemory dd ? FreeImage_SetBackgroundColor dd ? FreeImage_SetChannel dd ? FreeImage_SetComplexChannel dd ? FreeImage_SetDotsPerMeterX dd ? FreeImage_SetDotsPerMeterY dd ? FreeImage_SetMetadata dd ? FreeImage_SetOutputMessage dd ? FreeImage_SetOutputMessageStdCall dd ? FreeImage_SetPixelColor dd ? FreeImage_SetPixelIndex dd ? FreeImage_SetPluginEnabled dd ? FreeImage_SetTagCount dd ? FreeImage_SetTagDescription dd ? FreeImage_SetTagID dd ? FreeImage_SetTagKey dd ? FreeImage_SetTagLength dd ? FreeImage_SetTagType dd ? FreeImage_SetTagValue dd ? FreeImage_SetTransparencyTable dd ? FreeImage_SetTransparent dd ? FreeImage_SetTransparentIndex dd ? FreeImage_SwapColors dd ? FreeImage_SwapPaletteIndices dd ? FreeImage_TagToString dd ? FreeImage_TellMemory dd ? FreeImage_Threshold dd ? FreeImage_TmoDrago03 dd ? FreeImage_TmoFattal02 dd ? FreeImage_TmoReinhard05 dd ? FreeImage_ToneMapping dd ? FreeImage_Unload dd ? FreeImage_UnlockPage dd ? FreeImage_WriteMemory dd ? FreeImage_ZLibCRC32 dd ? FreeImage_ZLibCompress dd ? FreeImage_ZLibGUnzip dd ? FreeImage_ZLibGZip dd ? FreeImage_ZLibUncompress dd ?
.code
FreeLibrary_Init proc push 1 lea eax, FreeImage push eax invoke LoadLibrary, addr strFreeImage mov edx, dword ptr[esp] add dword ptr[esp], 4 mov [edx], eax .while dword ptr[esp+4] < 216 invoke GetProcAddress, FreeImage, dword ptr[esp+4] mov edx, dword ptr[esp] add dword ptr[esp], 4 mov [edx], eax inc dword ptr[esp+4] .endw add esp, 8 ret FreeLibrary_Init endp
FreeLibrary_Clean proc invoke FreeLibrary, FreeImage Ret FreeLibrary_Clean endp |
Example:
| CODE | ; Convertir el BMP a JPG ; ----------------------------------------- [START] push 0 push offset lpFileName push FIF_BMP call [FreeImage_Load] push eax push FILTER_BOX push screen_y push screen_x push eax call [FreeImage_Rescale] push eax push 80h push offset lpFileName2 push [esp+8] push FIF_JPEG call [FreeImage_Save] call [FreeImage_Unload] call [FreeImage_Unload] ; Convertir el objeto en memoria a JPG ; ----------------------------------------- [END] |
|