Page 1 of 1

Include FreeImage.dll in exe [Windows]

Posted: Mon Sep 21, 2015 8:05 pm
by RASHAD
Hi
- Download FreeImage.dll(x86) v3.17.0
- Save the next 4 files as stated with the dll in the same directory
- Compile as Main.pb as exe you will get 5.xx MB exe file
- Compress the exe file using PECompact you will get 1.5x MB

Have fun

Thanks to Thomas(ts-soft) for load dll into memory module
Save the next as "freeimage_header.pbi"

Code: Select all

#FREEIMAGE_COLORORDER_BGR = 0
#FREEIMAGE_COLORORDER_RGB = 1

#FREEIMAGE_MAJOR_VERSION = 3
#FREEIMAGE_MINOR_VERSION = 15
#FREEIMAGE_RELEASE_SERIAL = 4

#SEEK_SET = 0
#SEEK_CUR = 1
#SEEK_END = 2

#FI_RGBA_RED = 2
#FI_RGBA_GREEN = 1
#FI_RGBA_BLUE = 0
#FI_RGBA_ALPHA = 3
#FI_RGBA_RED_MASK = $00FF0000
#FI_RGBA_GREEN_MASK = $0000FF00
#FI_RGBA_BLUE_MASK = $000000FF
#FI_RGBA_ALPHA_MASK = $FF000000
#FI_RGBA_RED_SHIFT = 16
#FI_RGBA_GREEN_SHIFT = 8
#FI_RGBA_BLUE_SHIFT = 0
#FI_RGBA_ALPHA_SHIFT = 24

#FI16_555_RED_MASK = $7C00
#FI16_555_GREEN_MASK = $03E0
#FI16_555_BLUE_MASK = $001F
#FI16_555_RED_SHIFT = 10
#FI16_555_GREEN_SHIFT = 5
#FI16_555_BLUE_SHIFT = 0
#FI16_565_RED_MASK = $F800
#FI16_565_GREEN_MASK = $07E0
#FI16_565_BLUE_MASK = $001F
#FI16_565_RED_SHIFT = 11
#FI16_565_GREEN_SHIFT = 5
#FI16_565_BLUE_SHIFT = 0

#FIICC_DEFAULT	= $00
#FIICC_COLOR_IS_CMYK = $01

#FI16_555_RED_MASK = $7C00
#FI16_555_GREEN_MASK = $03E0
#FI16_555_BLUE_MASK = $001F
#FI16_555_RED_SHIFT = 10
#FI16_555_GREEN_SHIFT = 5
#FI16_555_BLUE_SHIFT = 0
#FI16_565_RED_MASK = $F800
#FI16_565_GREEN_MASK = $07E0
#FI16_565_BLUE_MASK = $001F
#FI16_565_RED_SHIFT = 11
#FI16_565_GREEN_SHIFT = 5
#FI16_565_BLUE_SHIFT = 0

Enumeration -1
  #FIF_UNKNOWN
  #FIF_BMP
  #FIF_ICO
  #FIF_JPE
  #FIF_JNG
  #FIF_KOAL
  #FIF_LBM
  #FIF_MNG
  #FIF_PBM
  #FIF_PBMRAW
  #FIF_PCD
  #FIF_PCX
  #FIF_PGM
  #FIF_PGMRAW
  #FIF_PNG
  #FIF_PPM
  #FIF_PPMRAW
  #FIF_RAS
  #FIF_TARGA
  #FIF_TIFF
  #FIF_WBMP
  #FIF_PSD
  #FIF_CUT
  #FIF_XBM
  #FIF_XPM
  #FIF_DDS
  #FIF_GIF
  #FIF_HDR
  #FIF_FAXG3
  #FIF_SGI
  #FIF_EXR
  #FIF_J2K
  #FIF_JP2
  #FIF_PFM
  #FIF_PICT
  #FIF_RAW
EndEnumeration

#FIF_IFF = #FIF_LBM

Enumeration
  #FIT_UNKNOWN
  #FIT_BITMAP
  #FIT_UINT16
  #FIT_INT16
  #FIT_UINT32
  #FIT_INT32
  #FIT_FLOAT
  #FIT_DOUBLE
  #FIT_COMPLEX
  #FIT_RGB16
  #FIT_RGBA16
  #FIT_RGBF
  #FIT_RGBAF
EndEnumeration

Enumeration
  #FIC_MINISWHITE
  #FIC_MINISBLACK
  #FIC_RGB
  #FIC_PALETTE
  #FIC_RGBALPHA
  #FIC_CMYK
EndEnumeration

Enumeration
  #FIQ_WUQUANT
  #FIQ_NNQUANT
EndEnumeration

Enumeration
  #FID_FS
  #FID_BAYER4x4
  #FID_BAYER8x8
  #FID_CLUSTER6x6
  #FID_CLUSTER8x8
  #FID_CLUSTER16x16
  #FID_BAYER16x16
EndEnumeration

Enumeration
  #FIJPEG_OP_NONE
  #FIJPEG_OP_FLIP_H
  #FIJPEG_OP_FLIP_V
  #FIJPEG_OP_TRANSPOSE
  #FIJPEG_OP_TRANSVERSE
  #FIJPEG_OP_ROTATE_90
  #FIJPEG_OP_ROTATE_180
  #FIJPEG_OP_ROTATE_270
EndEnumeration

Enumeration
  #FITMO_DRAGO03
  #FITMO_REINHARD05
  #FITMO_FATTAL02
EndEnumeration

Enumeration
  #FILTER_BOX
  #FILTER_BICUBIC
  #FILTER_BILINEAR
  #FILTER_BSPLINE
  #FILTER_CATMULLROM
  #FILTER_LANCZOS3
EndEnumeration

Enumeration
  #FICC_RGB
  #FICC_RED
  #FICC_GREEN
  #FICC_BLUE
  #FICC_ALPHA
  #FICC_BLACK
  #FICC_REAL
  #FICC_IMAG
  #FICC_MAG
  #FICC_PHASE
EndEnumeration

Enumeration
  #FIDT_NOTYPE
  #FIDT_BYTE
  #FIDT_ASCII
  #FIDT_SHORT
  #FIDT_LONG
  #FIDT_RATIONAL
  #FIDT_SBYTE
  #FIDT_UNDEFINED
  #FIDT_SSHORT
  #FIDT_SLONG
  #FIDT_SRATIONAL
  #FIDT_FLOAT
  #FIDT_DOUBLE
  #FIDT_IFD
  #FIDT_PALETTE
EndEnumeration

Enumeration 16
  #FIDT_LONG8
  #FIDT_SLONG8
  #FIDT_IFD8
EndEnumeration

Enumeration -1
  #FIMD_NODATA
  #FIMD_COMMENTS
  #FIMD_EXIF_MAIN
  #FIMD_EXIF_EXIF
  #FIMD_EXIF_GPS
  #FIMD_EXIF_MAKERNOTE
  #FIMD_EXIF_INTEROP
  #FIMD_IPTC
  #FIMD_XMP
  #FIMD_GEOTIFF
  #FIMD_ANIMATION
  #FIMD_CUSTOM
  #FIMD_EXIF_RAW
EndEnumeration

#FIF_LOAD_NOPIXELS = $8000

#BMP_DEFAULT =  0
#BMP_SAVE_RLE = 1
#CUT_DEFAULT =  0
#DDS_DEFAULT = 0
#EXR_DEFAULT = 0
#EXR_FLOAT = $0001
#EXR_NONE = $0002
#EXR_ZIP = 	$0004
#EXR_PIZ = 	$0008
#EXR_PXR24 = $0010
#EXR_B44 = 	$0020
#EXR_LC = 	$0040
#FAXG3_DEFAULT = 0
#GIF_DEFAULT = 0
#GIF_LOAD256 = 1
#GIF_PLAYBACK = 2
#HDR_DEFAULT = 0
#ICO_DEFAULT = 0
#ICO_MAKEALPHA = 1
#IFF_DEFAULT = 0
#J2K_DEFAULT = 0
#JP2_DEFAULT = 0
#JPEG_DEFAULT = 0
#JPEG_FAST = $0001
#JPEG_ACCURATE = $0002
#JPEG_CMYK = $0004
#JPEG_EXIFROTATE = $0008
#JPEG_GREYSCALE = $0010
#JPEG_QUALITYSUPERB = $80
#JPEG_QUALITYGOOD = $0100
#JPEG_QUALITYNORMAL = $0200
#JPEG_QUALITYAVERAGE = $0400
#JPEG_QUALITYBAD = $0800
#JPEG_PROGRESSIVE = $2000
#JPEG_SUBSAMPLING_411 = $1000 
#JPEG_SUBSAMPLING_420 = $4000
#JPEG_SUBSAMPLING_422 = $8000 
#JPEG_SUBSAMPLING_444 = $10000
#JPEG_OPTIMIZE = $20000
#JPEG_BASELINE = $40000
#KOALA_DEFAULT = 0
#LBM_DEFAULT = 0
#MNG_DEFAULT = 0
#PCD_DEFAULT = 0
#PCD_BASE = 1
#PCD_BASEDIV4 = 2
#PCD_BASEDIV16 = 3
#PCX_DEFAULT = 0
#PFM_DEFAULT = 0
#PICT_DEFAULT = 0
#PNG_DEFAULT = 0
#PNG_IGNOREGAMMA = 1
#PNG_Z_BEST_SPEED = $0001
#PNG_Z_DEFAULT_COMPRESSION = $0006
#PNG_Z_BEST_COMPRESSION = $0009
#PNG_Z_NO_COMPRESSION = $0100
#PNG_INTERLACED = 	$0200
#PNM_DEFAULT =  0
#PNM_SAVE_RAW = 0
#PNM_SAVE_ASCII = 1
#PSD_DEFAULT =  0
#PSD_CMYK = 1
#PSD_LAB = 2
#RAS_DEFAULT = 0
#RAW_DEFAULT = 0
#RAW_PREVIEW = 1
#RAW_DISPLAY = 2
#RAW_HALFSIZE = 4
#SGI_DEFAULT = 0
#TARGA_DEFAULT = 0
#TARGA_LOAD_RGB888 = 1
#TARGA_SAVE_RLE = 2
#TIFF_DEFAULT = 0
#TIFF_CMYK = $0001
#TIFF_PACKBITS = $0100
#TIFF_DEFLATE = $0200
#TIFF_ADOBE_DEFLATE = $0400
#TIFF_NONE = $0800
#TIFF_CCITTFAX3 = $1000
#TIFF_CCITTFAX4 = $2000
#TIFF_LZW = $4000
#TIFF_JPEG = $8000
#TIFF_LOGLUV = $10000
#WBMP_DEFAULT = 0
#XBM_DEFAULT = 0
#XPM_DEFAULT = 0

#FI_COLOR_IS_RGB_COLOR = $00
#FI_COLOR_IS_RGBA_COLOR = $01
#FI_COLOR_FIND_EQUAL_COLOR = $02
#FI_COLOR_ALPHA_IS_INDEX = $04
#FI_COLOR_PALETTE_SEARCH_MASK = (#FI_COLOR_FIND_EQUAL_COLOR | #FI_COLOR_ALPHA_IS_INDEX)


Re: Include FreeImage.dll in exe [Windows]

Posted: Mon Sep 21, 2015 8:07 pm
by RASHAD
Save the next as "freeimage_functions.pbi"

Code: Select all


Macro _AcquireMemory
  MemoryGetProcAddress(hDLL, "_FreeImage_AcquireMemory@12") ;3
EndMacro

Macro _AdjustBrightness
  MemoryGetProcAddress(hDLL, "_FreeImage_AdjustBrightness@12");3
EndMacro

Macro _AdjustColors
  MemoryGetProcAddress(hDLL, "_FreeImage_AdjustColors@32");8
EndMacro

Macro _AdjustContrast
  MemoryGetProcAddress(hDLL, "_FreeImage_AdjustContrast@12");3
EndMacro

Macro _AdjustCurve
  MemoryGetProcAddress(hDLL, "_FreeImage_AdjustCurve@12");3
EndMacro

Macro _AdjustGamma
  MemoryGetProcAddress(hDLL, "_FreeImage_AdjustGamma@12");3
EndMacro

Macro _Allocate
  MemoryGetProcAddress(hDLL, "_FreeImage_Allocate@24");6
EndMacro

Macro _AllocateEx
  MemoryGetProcAddress(hDLL, "_FreeImage_AllocateEx@36");9
EndMacro

Macro _AllocateExT
  MemoryGetProcAddress(hDLL, "_FreeImage_AllocateExT@40");10
EndMacro

Macro _AllocateHeader
  MemoryGetProcAddress(hDLL, "_FreeImage_AllocateHeader@28");7
EndMacro

Macro _AllocateHeaderForBits
  MemoryGetProcAddress(hDLL, "_FreeImage_AllocateHeaderForBits@36");9
EndMacro

Macro _AllocateHeaderT
  MemoryGetProcAddress(hDLL, "_FreeImage_AllocateHeaderT@32");8
EndMacro

Macro _AllocateT
  MemoryGetProcAddress(hDLL, "_FreeImage_AllocateT@28") ;7
EndMacro

Macro _AppendPage
  MemoryGetProcAddress(hDLL, "_FreeImage_AppendPage@8") ;2
EndMacro

Macro _ApplyColorMapping
  MemoryGetProcAddress(hDLL, "_FreeImage_ApplyColorMapping@24");6
EndMacro

Macro _ApplyPaletteIndexMapping
  MemoryGetProcAddress(hDLL, "_FreeImage_ApplyPaletteIndexMapping@20");5
EndMacro

Macro _Clone
  MemoryGetProcAddress(hDLL, "_FreeImage_Clone@4");1
EndMacro

Macro _CloneMetadata
  MemoryGetProcAddress(hDLL, "_FreeImage_CloneMetadata@8");2
  EndMacro
  
Macro _CloneTag
  MemoryGetProcAddress(hDLL, "_FreeImage_CloneTag@4");1
EndMacro

Macro _CloseMemory
  MemoryGetProcAddress(hDLL, "_FreeImage_CloseMemory@4");1
EndMacro

Macro _CloseMultiBitmap
  MemoryGetProcAddress(hDLL, "_FreeImage_CloseMultiBitmap@8");2
EndMacro

Macro _ColorQuantize
  MemoryGetProcAddress(hDLL, "_FreeImage_ColorQuantize@8");2
EndMacro

Macro _ColorQuantizeEx
  MemoryGetProcAddress(hDLL, "_FreeImage_ColorQuantizeEx@20");5
EndMacro

Macro _Composite
  MemoryGetProcAddress(hDLL, "_FreeImage_Composite@16");4
EndMacro

Macro _ConvertFromRawBits
  MemoryGetProcAddress(hDLL, "_FreeImage_ConvertFromRawBits@36");9
EndMacro

Macro _ConvertFromRawBitsEx
  MemoryGetProcAddress(hDLL, "_FreeImage_ConvertFromRawBitsEx@44");11
EndMacro

Macro _ConvertLine16To24_555
  MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine16To24_555@12");3
EndMacro

Macro _ConvertLine16To24_565
  MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine16To24_565@12");3
EndMacro

Macro _ConvertLine16To32_555
  MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine16To32_555@12");3
EndMacro

Macro _ConvertLine16To32_565
  MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine16To32_565@12");3
EndMacro

Macro _ConvertLine16To4_555
  MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine16To4_555@12");3
EndMacro

Macro _ConvertLine16To4_565
(a.i, b.i, c.i) MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine16To4_565@12");3
EndMacro

Macro _ConvertLine16To8_555
(a.i, b.i, c.i) MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine16To8_555@12");3
EndMacro

Macro _ConvertLine16To8_565
(a.i, b.i, c.i) MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine16To8_565@12");3
EndMacro

Macro _ConvertLine16_555_To16_565
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine16_555_To16_565@12")
EndMacro
 
Macro _ConvertLine16_565_To16_555
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine16_565_To16_555@12")
EndMacro

Macro _ConvertLine1To16_555
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine1To16_555@16")
EndMacro
Macro _ConvertLine1To16_565
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine1To16_565@16")
EndMacro
 
Macro _ConvertLine1To24
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine1To24@16")
EndMacro
 
Macro _ConvertLine1To32
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine1To32@16")
EndMacro

Macro _ConvertLine1To4
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine1To4@12")
EndMacro
 
Macro _ConvertLine1To8
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine1To8@12")
EndMacro
 
Macro _ConvertLine24To16_555
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine24To16_555@12")
EndMacro

Macro _ConvertLine24To16_565
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine24To16_565@12")
EndMacro

Macro _ConvertLine24To32
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine24To32@12")
EndMacro

Macro _ConvertLine24To4
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine24To4@12")
EndMacro

Macro _ConvertLine24To8
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine24To8@12")
EndMacro

Macro _ConvertLine32To16_555
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine32To16_555@12")
EndMacro

Macro _ConvertLine32To16_565
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine32To16_565@12")
EndMacro

Macro _ConvertLine32To24
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine32To24@12")
EndMacro

Macro _ConvertLine32To4
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine32To4@12")
EndMacro

Macro _ConvertLine32To8
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine32To8@12")
EndMacro

Macro _ConvertLine4To16_555
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine4To16_555@16")
EndMacro

Macro _ConvertLine4To16_565
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine4To16_565@16")
EndMacro

Macro _ConvertLine4To24
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine4To24@16")
EndMacro
 
Macro _ConvertLine4To32
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine4To32@16")
EndMacro
 
Macro _ConvertLine4To8
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine4To8@12")
EndMacro
 
Macro _ConvertLine8To16_555
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine8To16_555@16")
EndMacro
 
Macro _ConvertLine8To16_565
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine8To16_565@16")
EndMacro

Macro _ConvertLine8To24
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine8To24@16")
EndMacro

Macro _ConvertLine8To32
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine8To32@16")
EndMacro

Macro _ConvertLine8To4
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertLine8To4@16")
EndMacro

Macro _ConvertTo16Bits555
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertTo16Bits555@4")
EndMacro

Macro _ConvertTo16Bits565
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertTo16Bits565@4")
EndMacro

Macro _ConvertTo24Bits
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertTo24Bits@4")
EndMacro

Macro _ConvertTo32Bits
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertTo32Bits@4")
EndMacro

Macro _ConvertTo4Bits
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertTo4Bits@4")
EndMacro

Macro _ConvertTo8Bits
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertTo8Bits@4")
EndMacro

Macro _ConvertToFloat
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertToFloat@4")
EndMacro

Macro _ConvertToGreyscale
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertToGreyscale@4")
EndMacro

Macro _ConvertToRGB16
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertToRGB16@4")
EndMacro

Macro _ConvertToRGBA16
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertToRGBA16@4")
EndMacro

Macro _ConvertToRGBAF
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertToRGBAF@4")
EndMacro

Macro _ConvertToRGBF
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertToRGBF@4")
EndMacro

Macro _ConvertToRawBits
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertToRawBits@32")
EndMacro

Macro _ConvertToStandardType
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertToStandardType@8")
EndMacro

Macro _ConvertToType
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertToType@12")
EndMacro

Macro _ConvertToUINT16
 MemoryGetProcAddress(hDLL, "_FreeImage_ConvertToUINT16@4")
EndMacro

Macro _Copy
 MemoryGetProcAddress(hDLL, "_FreeImage_Copy@20")
EndMacro

Macro _CreateICCProfile
 MemoryGetProcAddress(hDLL, "_FreeImage_CreateICCProfile@12")
EndMacro

Macro _CreateTag
 MemoryGetProcAddress(hDLL, "_FreeImage_CreateTag@0")
EndMacro

Macro _CreateView
 MemoryGetProcAddress(hDLL, "_FreeImage_CreateView@20")
EndMacro

Macro _DeInitialise
 MemoryGetProcAddress(hDLL, "_FreeImage_DeInitialise@0")
EndMacro

Macro _DeletePage
 MemoryGetProcAddress(hDLL, "_FreeImage_DeletePage@8")
EndMacro

Macro _DeleteTag
 MemoryGetProcAddress(hDLL, "_FreeImage_DeleteTag@4")
EndMacro

Macro _DestroyICCProfile
 MemoryGetProcAddress(hDLL, "_FreeImage_DestroyICCProfile@4")
EndMacro

Macro _Dither
 MemoryGetProcAddress(hDLL, "_FreeImage_Dither@8")
EndMacro

Macro _EnlargeCanvas
 MemoryGetProcAddress(hDLL, "_FreeImage_EnlargeCanvas@28")
EndMacro

Macro _FIFSupportsExportBPP
 MemoryGetProcAddress(hDLL, "_FreeImage_FIFSupportsExportBPP@8")
EndMacro

Macro _FIFSupportsExportType
 MemoryGetProcAddress(hDLL, "_FreeImage_FIFSupportsExportType@8")
EndMacro

Macro _FIFSupportsICCProfiles
 MemoryGetProcAddress(hDLL, "_FreeImage_FIFSupportsICCProfiles@4")
EndMacro

Macro _FIFSupportsNoPixels
 MemoryGetProcAddress(hDLL, "_FreeImage_FIFSupportsNoPixels@4")
EndMacro

Macro _FIFSupportsReading
 MemoryGetProcAddress(hDLL, "_FreeImage_FIFSupportsReading@4")
EndMacro

Macro _FIFSupportsWriting
 MemoryGetProcAddress(hDLL, "_FreeImage_FIFSupportsWriting@4")
EndMacro

Macro _FillBackground
 MemoryGetProcAddress(hDLL, "_FreeImage_FillBackground@12")
EndMacro

Macro _FindCloseMetadata
 MemoryGetProcAddress(hDLL, "_FreeImage_FindCloseMetadata@4")
EndMacro

Macro _FindFirstMetadata
 MemoryGetProcAddress(hDLL, "_FreeImage_FindFirstMetadata@12")
EndMacro

Macro _FindNextMetadata
 MemoryGetProcAddress(hDLL, "_FreeImage_FindNextMetadata@8")
EndMacro

Macro _FlipHorizontal
 MemoryGetProcAddress(hDLL, "_FreeImage_FlipHorizontal@4")
EndMacro

Macro _FlipVertical
 MemoryGetProcAddress(hDLL, "_FreeImage_FlipVertical@4")
EndMacro

Macro _GetAdjustColorsLookupTable
 MemoryGetProcAddress(hDLL, "_FreeImage_GetAdjustColorsLookupTable@32")
EndMacro

Macro _GetBPP
 MemoryGetProcAddress(hDLL, "_FreeImage_GetBPP@4")
EndMacro

Macro _GetBackgroundColor
 MemoryGetProcAddress(hDLL, "_FreeImage_GetBackgroundColor@8")
EndMacro

Macro _GetBits
 MemoryGetProcAddress(hDLL, "_FreeImage_GetBits@4")
EndMacro

Macro _GetBlueMask
 MemoryGetProcAddress(hDLL, "_FreeImage_GetBlueMask@4")
EndMacro

Macro _GetChannel
 MemoryGetProcAddress(hDLL, "_FreeImage_GetChannel@8")
EndMacro

Macro _GetColorType
 MemoryGetProcAddress(hDLL, "_FreeImage_GetColorType@4")
EndMacro

Macro _GetColorsUsed
 MemoryGetProcAddress(hDLL, "_FreeImage_GetColorsUsed@4")
EndMacro

Macro _GetComplexChannel
 MemoryGetProcAddress(hDLL, "_FreeImage_GetComplexChannel@8")
EndMacro

Macro _GetCopyrightMessage
 MemoryGetProcAddress(hDLL, "_FreeImage_GetCopyrightMessage@0")
EndMacro

Macro _GetDIBSize
 MemoryGetProcAddress(hDLL, "_FreeImage_GetDIBSize@4")
EndMacro

Macro _GetDotsPerMeterX
 MemoryGetProcAddress(hDLL, "_FreeImage_GetDotsPerMeterX@4")
EndMacro

Macro _GetDotsPerMeterY
 MemoryGetProcAddress(hDLL, "_FreeImage_GetDotsPerMeterY@4")
EndMacro

Macro _GetFIFCount
 MemoryGetProcAddress(hDLL, "_FreeImage_GetFIFCount@0")
EndMacro

Macro _GetFIFDescription
 MemoryGetProcAddress(hDLL, "_FreeImage_GetFIFDescription@4")
EndMacro

Macro _GetFIFExtensionList
 MemoryGetProcAddress(hDLL, "_FreeImage_GetFIFExtensionList@4")
EndMacro

Macro _GetFIFFromFilename
 MemoryGetProcAddress(hDLL, "_FreeImage_GetFIFFromFilename@4")
EndMacro

Macro _GetFIFFromFilenameU
 MemoryGetProcAddress(hDLL, "_FreeImage_GetFIFFromFilenameU@4")
EndMacro

Macro _GetFIFFromFormat
 MemoryGetProcAddress(hDLL, "_FreeImage_GetFIFFromFormat@4")
EndMacro

Macro _GetFIFFromMime
 MemoryGetProcAddress(hDLL, "_FreeImage_GetFIFFromMime@4")
EndMacro

Macro _GetFIFMimeType
 MemoryGetProcAddress(hDLL, "_FreeImage_GetFIFMimeType@4")
EndMacro

Macro _GetFIFRegExpr
 MemoryGetProcAddress(hDLL, "_FreeImage_GetFIFRegExpr@4")
EndMacro

Macro _GetFileType
 MemoryGetProcAddress(hDLL, "_FreeImage_GetFileType@8")
EndMacro

Macro _GetFileTypeFromHandle
 MemoryGetProcAddress(hDLL, "_FreeImage_GetFileTypeFromHandle@12")
EndMacro

Macro _GetFileTypeFromMemory
 MemoryGetProcAddress(hDLL, "_FreeImage_GetFileTypeFromMemory@8")
EndMacro

Macro _GetFileTypeU
 MemoryGetProcAddress(hDLL, "_FreeImage_GetFileTypeU@8")
EndMacro

Macro _GetFormatFromFIF
 MemoryGetProcAddress(hDLL, "_FreeImage_GetFormatFromFIF@4")
EndMacro

Macro _GetGreenMask
 MemoryGetProcAddress(hDLL, "_FreeImage_GetGreenMask@4")
EndMacro

Macro _GetHeight
 MemoryGetProcAddress(hDLL, "_FreeImage_GetHeight@4")
EndMacro

Macro _GetHistogram
 MemoryGetProcAddress(hDLL, "_FreeImage_GetHistogram@12")
EndMacro

Macro _GetICCProfile
 MemoryGetProcAddress(hDLL, "_FreeImage_GetICCProfile@4")
EndMacro

Macro _GetImageType
 MemoryGetProcAddress(hDLL, "_FreeImage_GetImageType@4")
EndMacro

Macro _GetInfo
 MemoryGetProcAddress(hDLL, "_FreeImage_GetInfo@4")
EndMacro

Macro _GetInfoHeader
 MemoryGetProcAddress(hDLL, "_FreeImage_GetInfoHeader@4")
EndMacro

Macro _GetLine
 MemoryGetProcAddress(hDLL, "_FreeImage_GetLine@4")
EndMacro

Macro _GetLockedPageNumbers
 MemoryGetProcAddress(hDLL, "_FreeImage_GetLockedPageNumbers@12")
EndMacro

Macro _GetMemorySize
 MemoryGetProcAddress(hDLL, "_FreeImage_GetMemorySize@4")
EndMacro

Macro _GetMetadata
 MemoryGetProcAddress(hDLL, "_FreeImage_GetMetadata@16")
EndMacro

Macro _GetMetadataCount
 MemoryGetProcAddress(hDLL, "_FreeImage_GetMetadataCount@8")
EndMacro

Macro _GetPageCount
 MemoryGetProcAddress(hDLL, "_FreeImage_GetPageCount@4")
EndMacro

Macro _GetPalette
 MemoryGetProcAddress(hDLL, "_FreeImage_GetPalette@4")
EndMacro

Macro _GetPitch
 MemoryGetProcAddress(hDLL, "_FreeImage_GetPitch@4")
EndMacro

Macro _GetPixelColor
 MemoryGetProcAddress(hDLL, "_FreeImage_GetPixelColor@16")
EndMacro

Macro _GetPixelIndex
 MemoryGetProcAddress(hDLL, "_FreeImage_GetPixelIndex@16")
EndMacro

Macro _GetRedMask
 MemoryGetProcAddress(hDLL, "_FreeImage_GetRedMask@4")
EndMacro

Macro _GetScanLine
 MemoryGetProcAddress(hDLL, "_FreeImage_GetScanLine@8")
EndMacro

Macro _GetTagCount
 MemoryGetProcAddress(hDLL, "_FreeImage_GetTagCount@4")
EndMacro

Macro _GetTagDescription
 MemoryGetProcAddress(hDLL, "_FreeImage_GetTagDescription@4")
EndMacro

Macro _GetTagID
 MemoryGetProcAddress(hDLL, "_FreeImage_GetTagID@4")
EndMacro

Macro _GetTagKey
 MemoryGetProcAddress(hDLL, "_FreeImage_GetTagKey@4")
EndMacro

Macro _GetTagLength
 MemoryGetProcAddress(hDLL, "_FreeImage_GetTagLength@4")
EndMacro

Macro _GetTagType
 MemoryGetProcAddress(hDLL, "_FreeImage_GetTagType@4")
EndMacro

Macro _GetTagValue
 MemoryGetProcAddress(hDLL, "_FreeImage_GetTagValue@4")
EndMacro

Macro _GetThumbnail
 MemoryGetProcAddress(hDLL, "_FreeImage_GetThumbnail@4")
EndMacro

Macro _GetTransparencyCount
 MemoryGetProcAddress(hDLL, "_FreeImage_GetTransparencyCount@4")
EndMacro

Macro _GetTransparencyTable
 MemoryGetProcAddress(hDLL, "_FreeImage_GetTransparencyTable@4")
EndMacro

Macro _GetTransparentIndex
 MemoryGetProcAddress(hDLL, "_FreeImage_GetTransparentIndex@4")
EndMacro

Macro _GetVersion
 MemoryGetProcAddress(hDLL, "_FreeImage_GetVersion@0")
EndMacro

Macro _GetWidth
 MemoryGetProcAddress(hDLL, "_FreeImage_GetWidth@4")
EndMacro

Macro _HasBackgroundColor
 MemoryGetProcAddress(hDLL, "_FreeImage_HasBackgroundColor@4")
EndMacro

Macro _HasPixels
 MemoryGetProcAddress(hDLL, "_FreeImage_HasPixels@4")
EndMacro

Macro _HasRGBMasks
 MemoryGetProcAddress(hDLL, "_FreeImage_HasRGBMasks@4")
EndMacro

Macro _Initialise
 MemoryGetProcAddress(hDLL, "_FreeImage_Initialise@4")
EndMacro

Macro _InsertPage
 MemoryGetProcAddress(hDLL, "_FreeImage_InsertPage@12")
EndMacro

Macro _Invert
 MemoryGetProcAddress(hDLL, "_FreeImage_Invert@4")
EndMacro

Macro _IsLittleEndian
 MemoryGetProcAddress(hDLL, "_FreeImage_IsLittleEndian@0")
EndMacro

Macro _IsPluginEnabled
 MemoryGetProcAddress(hDLL, "_FreeImage_IsPluginEnabled@4")
EndMacro

Macro _IsTransparent
 MemoryGetProcAddress(hDLL, "_FreeImage_IsTransparent@4")
EndMacro

Macro _JPEGCrop
 MemoryGetProcAddress(hDLL, "_FreeImage_JPEGCrop@24")
EndMacro
 
Macro _JPEGCropU
 MemoryGetProcAddress(hDLL, "_FreeImage_JPEGCropU@24")
EndMacro
 
Macro _JPEGTransform
 MemoryGetProcAddress(hDLL, "_FreeImage_JPEGTransform@16")
EndMacro

Macro _JPEGTransformCombined
 MemoryGetProcAddress(hDLL, "_FreeImage_JPEGTransformCombined@32")
EndMacro

Macro _JPEGTransformCombinedFromMemory
 MemoryGetProcAddress(hDLL, "_FreeImage_JPEGTransformCombinedFromMemory@32")
EndMacro

Macro _JPEGTransformCombinedU
 MemoryGetProcAddress(hDLL, "_FreeImage_JPEGTransformCombinedU@32")
EndMacro

Macro _JPEGTransformFromHandle
 MemoryGetProcAddress(hDLL, "_FreeImage_JPEGTransformFromHandle@40")
EndMacro

Macro _JPEGTransformU
 MemoryGetProcAddress(hDLL, "_FreeImage_JPEGTransformU@16")
EndMacro

Macro _Load
 MemoryGetProcAddress(hDLL, "_FreeImage_Load@12")
EndMacro

Macro _LoadFromHandle
 MemoryGetProcAddress(hDLL, "_FreeImage_LoadFromHandle@16")
EndMacro

Macro _LoadFromMemory
 MemoryGetProcAddress(hDLL, "_FreeImage_LoadFromMemory@12")
EndMacro

Macro _LoadMultiBitmapFromMemory
 MemoryGetProcAddress(hDLL, "_FreeImage_LoadMultiBitmapFromMemory@12")
EndMacro

Macro _LoadU
 MemoryGetProcAddress(hDLL, "_FreeImage_LoadU@12")
EndMacro

Macro _LockPage
 MemoryGetProcAddress(hDLL, "_FreeImage_LockPage@8")
EndMacro

Macro _LookupSVGColor
 MemoryGetProcAddress(hDLL, "_FreeImage_LookupSVGColor@16")
EndMacro

Macro _LookupX11Color
 MemoryGetProcAddress(hDLL, "_FreeImage_LookupX11Color@16")
EndMacro

Macro _MakeThumbnail
 MemoryGetProcAddress(hDLL, "_FreeImage_MakeThumbnail@12")
EndMacro

Macro _MovePage
 MemoryGetProcAddress(hDLL, "_FreeImage_MovePage@12")
EndMacro

Macro _MultigridPoissonSolver
 MemoryGetProcAddress(hDLL, "_FreeImage_MultigridPoissonSolver@8")
EndMacro

Macro _OpenMemory
 MemoryGetProcAddress(hDLL, "_FreeImage_OpenMemory@8")
EndMacro

Macro _OpenMultiBitmap
 MemoryGetProcAddress(hDLL, "_FreeImage_OpenMultiBitmap@24")
EndMacro

Macro _OpenMultiBitmapFromHandle
 MemoryGetProcAddress(hDLL, "_FreeImage_OpenMultiBitmapFromHandle@16")
EndMacro

Macro _OutputMessageProc
  MemoryGetProcAddress(hDLL, "FreeImage_OutputMessageProc");0
EndMacro

Macro _Paste
 MemoryGetProcAddress(hDLL, "_FreeImage_Paste@20")
EndMacro

Macro _PreMultiplyWithAlpha
 MemoryGetProcAddress(hDLL, "_FreeImage_PreMultiplyWithAlpha@4")
EndMacro

Macro _ReadMemory
 MemoryGetProcAddress(hDLL, "_FreeImage_ReadMemory@16")
EndMacro

Macro _RegisterExternalPlugin
 MemoryGetProcAddress(hDLL, "_FreeImage_RegisterExternalPlugin@20")
EndMacro

Macro _RegisterLocalPlugin
 MemoryGetProcAddress(hDLL, "_FreeImage_RegisterLocalPlugin@20")
EndMacro

Macro _Rescale
 MemoryGetProcAddress(hDLL, "_FreeImage_Rescale@16")
EndMacro
 
Macro _RescaleRect
 MemoryGetProcAddress(hDLL, "_FreeImage_RescaleRect@36")
EndMacro
 
Macro _Rotate
 MemoryGetProcAddress(hDLL, "_FreeImage_Rotate@16")
EndMacro

Macro _RotateClassic
 MemoryGetProcAddress(hDLL, "_FreeImage_RotateClassic@12")
EndMacro
 
Macro _RotateEx
 MemoryGetProcAddress(hDLL, "_FreeImage_RotateEx@48")
EndMacro
 
Macro _Save
 MemoryGetProcAddress(hDLL, "_FreeImage_Save@16")
EndMacro

Macro _SaveMultiBitmapToHandle
 MemoryGetProcAddress(hDLL, "_FreeImage_SaveMultiBitmapToHandle@20")
EndMacro

Macro _SaveMultiBitmapToMemory
 MemoryGetProcAddress(hDLL, "_FreeImage_SaveMultiBitmapToMemory@16")
EndMacro

Macro _SaveToHandle
 MemoryGetProcAddress(hDLL, "_FreeImage_SaveToHandle@20")
EndMacro

Macro _SaveToMemory
 MemoryGetProcAddress(hDLL, "_FreeImage_SaveToMemory@16")
EndMacro

Macro _SaveU
 MemoryGetProcAddress(hDLL, "_FreeImage_SaveU@16")
EndMacro

Macro _SeekMemory
 MemoryGetProcAddress(hDLL, "_FreeImage_SeekMemory@12")
EndMacro

Macro _SetBackgroundColor
 MemoryGetProcAddress(hDLL, "_FreeImage_SetBackgroundColor@8")
EndMacro

Macro _SetChannel
 MemoryGetProcAddress(hDLL, "_FreeImage_SetChannel@12")
EndMacro

Macro _SetComplexChannel
 MemoryGetProcAddress(hDLL, "_FreeImage_SetComplexChannel@12")
EndMacro

Macro _SetDotsPerMeterX
 MemoryGetProcAddress(hDLL, "_FreeImage_SetDotsPerMeterX@8")
EndMacro

Macro _SetDotsPerMeterY
 MemoryGetProcAddress(hDLL, "_FreeImage_SetDotsPerMeterY@8")
EndMacro

Macro _SetMetadata
 MemoryGetProcAddress(hDLL, "_FreeImage_SetMetadata@16")
EndMacro

Macro _SetMetadataKeyValue
 MemoryGetProcAddress(hDLL, "_FreeImage_SetMetadataKeyValue@16")
EndMacro

Macro _SetOutputMessage
 MemoryGetProcAddress(hDLL, "_FreeImage_SetOutputMessage@4")
EndMacro

Macro _SetOutputMessageStdCall
 MemoryGetProcAddress(hDLL, "_FreeImage_SetOutputMessageStdCall@4")
EndMacro

Macro _SetPixelColor
 MemoryGetProcAddress(hDLL, "_FreeImage_SetPixelColor@16")
EndMacro

Macro _SetPixelIndex
 MemoryGetProcAddress(hDLL, "_FreeImage_SetPixelIndex@16")
EndMacro

Macro _SetPluginEnabled
 MemoryGetProcAddress(hDLL, "_FreeImage_SetPluginEnabled@8")
EndMacro

Macro _SetTagCount
 MemoryGetProcAddress(hDLL, "_FreeImage_SetTagCount@8")
EndMacro

Macro _SetTagDescription
 MemoryGetProcAddress(hDLL, "_FreeImage_SetTagDescription@8")
EndMacro

Macro _SetTagID
 MemoryGetProcAddress(hDLL, "_FreeImage_SetTagID@8")
EndMacro

Macro _SetTagKey
 MemoryGetProcAddress(hDLL, "_FreeImage_SetTagKey@8")
EndMacro

Macro _SetTagLength
 MemoryGetProcAddress(hDLL, "_FreeImage_SetTagLength@8")
EndMacro

Macro _SetTagType
 MemoryGetProcAddress(hDLL, "_FreeImage_SetTagType@8")
EndMacro

Macro _SetTagValue
 MemoryGetProcAddress(hDLL, "_FreeImage_SetTagValue@8")
EndMacro

Macro _SetThumbnail
 MemoryGetProcAddress(hDLL, "_FreeImage_SetThumbnail@8")
EndMacro

Macro _SetTransparencyTable
 MemoryGetProcAddress(hDLL, "_FreeImage_SetTransparencyTable@12")
EndMacro

Macro _SetTransparent
 MemoryGetProcAddress(hDLL, "_FreeImage_SetTransparent@8")
EndMacro

Macro _SetTransparentIndex
 MemoryGetProcAddress(hDLL, "_FreeImage_SetTransparentIndex@8")
EndMacro

Macro _SwapColors
 MemoryGetProcAddress(hDLL, "_FreeImage_SwapColors@16")
EndMacro

Macro _SwapPaletteIndices
 MemoryGetProcAddress(hDLL, "_FreeImage_SwapPaletteIndices@12")
EndMacro

Macro _TagToString
 MemoryGetProcAddress(hDLL, "_FreeImage_TagToString@12")
EndMacro

Macro _TellMemory
 MemoryGetProcAddress(hDLL, "_FreeImage_TellMemory@4")
EndMacro

Macro _Threshold
 MemoryGetProcAddress(hDLL, "_FreeImage_Threshold@8")
EndMacro

Macro _TmoDrago03
 MemoryGetProcAddress(hDLL, "_FreeImage_TmoDrago03@20")
EndMacro

Macro _TmoFattal02
 MemoryGetProcAddress(hDLL, "_FreeImage_TmoFattal02@20")
EndMacro

Macro _TmoReinhard05
 MemoryGetProcAddress(hDLL, "_FreeImage_TmoReinhard05@20")
EndMacro

Macro _TmoReinhard05Ex
 MemoryGetProcAddress(hDLL, "_FreeImage_TmoReinhard05Ex@36")
EndMacro

Macro _ToneMapping
 MemoryGetProcAddress(hDLL, "_FreeImage_ToneMapping@24")
EndMacro

Macro _Unload
 MemoryGetProcAddress(hDLL, "_FreeImage_Unload@4")
EndMacro

Macro _UnlockPage
 MemoryGetProcAddress(hDLL, "_FreeImage_UnlockPage@12")
EndMacro

Macro _WriteMemory
 MemoryGetProcAddress(hDLL, "_FreeImage_WriteMemory@16")
EndMacro

Macro _ZLibCRC32
 MemoryGetProcAddress(hDLL, "_FreeImage_ZLibCRC32@12")
EndMacro

Macro _ZLibCompress
 MemoryGetProcAddress(hDLL, "_FreeImage_ZLibCompress@16")
EndMacro

Macro _ZLibGUnzip
 MemoryGetProcAddress(hDLL, "_FreeImage_ZLibGUnzip@16")
EndMacro

Macro _ZLibGZip
 MemoryGetProcAddress(hDLL, "_FreeImage_ZLibGZip@16")
EndMacro

Macro _ZLibUncompress
 MemoryGetProcAddress(hDLL, "_FreeImage_ZLibUncompress@16")
EndMacro

Re: Include FreeImage.dll in exe [Windows]

Posted: Mon Sep 21, 2015 8:09 pm
by RASHAD
Save the next as "MemoryModule_4FI.pbi"

Code: Select all

; *
; * Memory DLL loading code
; * Version 0.0.3
; *
; * Memory DLL loading code
; * Version 0.0.3
; *
; * Copyright (c) 2004-2013 by Joachim Bauch / mail@joachim-bauch.de
; * http://www.joachim-bauch.de
; *
; * The contents of this file are subject To the Mozilla Public License Version
; * 2.0 (the "License"); you may not use this file except in compliance with
; * the License. You may obtain a copy of the License at
; * http://www.mozilla.org/MPL/
; *
; * Software distributed under the License is distributed on an "AS IS" basis,
; * WITHOUT WARRANTY OF ANY KIND, either express Or implied. See the License
; * For the specific language governing rights And limitations under the
; * License.
; *
; * The Original Code is MemoryModule.h
; *
; * The Initial Developer of the Original Code is Joachim Bauch.
; *
; * Portions created by Joachim Bauch are Copyright (C) 2004-2013
; * Joachim Bauch. All Rights Reserved.
; *
; * 

; compiled with PellesC
; import and example by Thomas (ts-soft) Schulz

#MemoryModule_Lib$ = "MemoryModule86.lib"

Import #MemoryModule_Lib$
  MemoryLoadLibrary(*MemoryPointer)
  MemoryGetProcAddress(hModule, FunctionName.p-ascii)
  MemoryFreeLibrary(hModule)
  MemoryFindResource(hModule, lpName.p-ascii, lpType.p-ascii)
  MemoryFindResourceEx(hModule, lpName.p-ascii, lpType.p-ascii, wLanguage.w)
  MemoryLoadResource(hModule, hResInfo)
  MemoryLoadString(hModule, uID.l, *lpBuffer, nBufferMax.l)
  MemoryLoadStringEx(hModule, uID.l, *lpBuffer, nBufferMax.l, wLanguage.w)
  MemorySizeofResource(hModule, hResInfo)
EndImport


Re: Include FreeImage.dll in exe [Windows]

Posted: Mon Sep 21, 2015 8:10 pm
by RASHAD
Save the next as "MAIN.pb"

Code: Select all


XIncludeFile "freeimage_header.pbi"
XIncludeFile "freeimage_functions.pbi"
XIncludeFile "MemoryModule_4FI.pbi"

DataSection
  DLL:
     IncludeBinary "FreeImage.dll"
EndDataSection

Define hDLL = MemoryLoadLibrary(?DLL)
  
OpenWindow(0, 0,0, 400,400, "FreeImage", #PB_Window_SystemMenu| #PB_Window_ScreenCentered)
  WindowBounds(0,400,400, GetSystemMetrics_(#SM_CXSCREEN)-40, GetSystemMetrics_(#SM_CYSCREEN)-60)
  CanvasGadget(0, 10,10,380,340,#PB_Canvas_Border)
  ContainerGadget(1,10, 360, 380, 30,#PB_Container_Flat)
    ButtonGadget(2, 5,5, 70, 20, "Load Image")
    ButtonGadget(3, 80,5, 70, 20, "Save As ->")
    ComboBoxGadget(4, 155,5, 110, 20)
    AddGadgetItem(4, -1, "PNG")
    AddGadgetItem(4, -1, "Composite PNG")
    AddGadgetItem(4, -1, "Transparent PNG")
    AddGadgetItem(4, -1, "JPG")
    AddGadgetItem(4, -1, "JP2")
    AddGadgetItem(4, -1, "TIF")
    ButtonGadget(5, 335,5, 40, 20, "EXIT")
  CloseGadgetList()
  SetGadgetState(4,0) 
  out$ = GetHomeDirectory() + "temp.bmp"
  DW.f = GetSystemMetrics_(#SM_CXSCREEN)
  DH.f = GetSystemMetrics_(#SM_CYSCREEN)
Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        Break
        
      Case #PB_Event_Gadget
          Select EventGadget()
          Case 2
          FileName$ = OpenFileRequester("SELECT IMAGE","","All supported formats|*.*|TGA image (*.tga)| *.tga|TIF image (*.tif)| *.tif| TIFF image (*.tiff)| *.tiff| PNG image (*.png)| *.png| BMP image (*.bmp)| *.bmp| Icon file (*.ico)| *.ico| JPEG image (*.jpg;*.jpeg;*.jp2)| *.jpg; *.jpeg; *.jp2| GIF image (*.gif)|*.gif",0)
          
          CompilerIf #PB_Compiler_Unicode  
            Temp$ = Space(#MAX_PATH)
            PokeS(@Temp$,FileName$ , -1, #PB_Ascii)
            FileName$ = Temp$
          CompilerEndIf
          
          If FileName$ <> ""
              CallFunctionFast(_UnLoad, img)
              CallFunctionFast(_UnLoad, img2)
                 FIF = CallFunctionFast(_GetFIFFromFilename ,@FileName$)
                 If FIF >= 0
                img = CallFunctionFast(_Load ,FIF, @FileName$,0)
                width.f = CallFunctionFast(_GetWidth ,img)
                height.f = CallFunctionFast(_GetHeight ,img)
                HScale.f = 1
                VScale.f = 1
                If width > (DW -100)
                    HScale = (DW-100)/width
                EndIf
                If height > (DH -100)
                    VScale = (DH-100)/height
                EndIf
                If HScale < VScale
                   Scale.f = HScale
                Else
                   Scale.f = VScale                
                EndIf
                If Scale < 1
                  width = width * Scale * 0.9
                  height = height * Scale * 0.9
                EndIf 
;                 CallFunctionFast(_Save ,#FIF_BMP, img, @TName$,0)
;                 LoadImage(0,TName$)
;                 DeleteFile(TName$)
                ddb = CreateDIBitmap_(GetDC_(0), CallFunctionFast(_GetInfoHeader,img), #CBM_INIT, CallFunctionFast(_GetBits,img), CallFunctionFast(_GetInfo,img), #DIB_RGB_COLORS)                 
                ResizeWindow(0,(DW - width)/2-10,(DH- height)/2-80 ,width+24,height+64)                
                ResizeGadget(0,WindowWidth(0)/2-width/2-2,WindowHeight(0)/2-height/2-20,width+4,height+4)
                ResizeGadget(1,10,WindowHeight(0)-40,380,30)
                SetGadgetAttribute(0, #PB_Canvas_Image ,ddb)
              Else
                MessageRequester("Error", "Unknown Format",#MB_ICONSTOP|#PB_MessageRequester_Ok)
              EndIf
            Else
              MessageRequester("Error", "No Image Loaded",#MB_ICONERROR|#PB_MessageRequester_Ok)
            EndIf
              
            Case 3
                If FileName$ <> ""         
                    If CallFunctionFast(_GetBPP,img) <> 24
                       img = CallFunctionFast(_ConvertTo24Bits,img)
                    EndIf 
                    If GetGadgetState(4) = 1 Or GetGadgetState(4) = 2
                       SName$ = GetHomeDirectory() + GetFilePart(FileName$ ,#PB_FileSystem_NoExtension) +"_CO.png"
                      CompilerIf #PB_Compiler_Unicode  
                        Temp$ = Space(#MAX_PATH)
                        PokeS(@Temp$,SName$ , -1, #PB_Ascii)
                        SName$ = Temp$
                      CompilerEndIf
                    img2 = CallFunctionFast(_ColorQuantize,img,#FIQ_WUQUANT)
                    If GetGadgetState(4) = 2
                      SName$ = GetHomeDirectory() + GetFilePart(FileName$ ,#PB_FileSystem_NoExtension) +"_TR.png"
                      CompilerIf #PB_Compiler_Unicode  
                        Temp$ = Space(#MAX_PATH)
                        PokeS(@Temp$,SName$ , -1, #PB_Ascii)
                        SName$ = Temp$
                      CompilerEndIf                  
                      Palette = CallFunctionFast(_GetPalette,img2)
                      Dim Transparency.l(255)
                      For i = 0 To  255
                            Transparency(i) = 255
                            If PeekL(Palette+i) = $FFFFFF
                               Transparency(i) = 0
                            EndIf
                      Next                  
                      CallFunctionFast(_SetTransparencyTable,img2, Transparency(), 8)
                      ReDim Transparency.l(0)
                    EndIf
                    CallFunctionFast(_Save,#FIF_PNG,img2,@SName$,0)
                    MessageRequester("Info", "Image Savesd Successfully",#MB_ICONINFORMATION|#PB_MessageRequester_Ok)
                  ElseIf GetGadgetState(4) = 0
                    SName$ = GetHomeDirectory() + GetFilePart(FileName$ ,#PB_FileSystem_NoExtension) +"_NR.png"
                      CompilerIf #PB_Compiler_Unicode  
                        Temp$ = Space(#MAX_PATH)
                        PokeS(@Temp$,SName$ , -1, #PB_Ascii)
                        SName$ = Temp$
                      CompilerEndIf
                       CallFunctionFast(_Save ,#FIF_PNG, img, @SName$,0)
                       MessageRequester("Info", "Image Savesd Successfully",#MB_ICONINFORMATION|#PB_MessageRequester_Ok)
                     EndIf
                   Else
                     MessageRequester("Error", "No Image Loaded",#MB_ICONERROR|#PB_MessageRequester_Ok)
                   EndIf
                   
            Case 5
                End                   
        EndSelect
    EndSelect
ForEver
  
MemoryFreeLibrary(hDLL)
Edit : Unicode support + some improvement

Re: Include FreeImage.dll in exe [Windows]

Posted: Wed Sep 23, 2015 10:26 am
by firace
Awesome example, thanks for sharing!

I guess we also need the file MemoryModule86.lib? Where can we find that?

And do you create those import files manually, or is there some automated way of generating them?

Re: Include FreeImage.dll in exe [Windows]

Posted: Wed Sep 23, 2015 1:09 pm
by RASHAD
Hi firace
- For the memory module and other very good stuff
http://www.realsource.de/downloads/doc_ ... morymodule

- For the commands.pbi almost handy with the support of Import DLL functions tools by ts-soft and others

BTW : I just changed a lot of the stuff for better I will post it when finished

Re: Include FreeImage.dll in exe [Windows]

Posted: Wed Sep 23, 2015 1:21 pm
by ts-soft
to hear nicely, which mine are still used old tools and function :wink:

Re: Include FreeImage.dll in exe [Windows]

Posted: Wed Sep 23, 2015 1:38 pm
by RASHAD
Most of the time I am using Lib2PBImport_2013.exe
This is the first time to use the Memory Module
I was using before some old tech.


Thanks Thomas
You are doing a lot for the community

Re: Include FreeImage.dll in exe [Windows]

Posted: Fri Sep 25, 2015 1:36 pm
by firace
Great stuff! Both of you are sharing so much stuff here it's amazing.

Re: Include FreeImage.dll in exe [Windows]

Posted: Sat Sep 26, 2015 6:13 am
by kvitaliy
Image
Bmp and JPG and all supported formats! :D ( in Unicode mode)

Re: Include FreeImage.dll in exe [Windows]

Posted: Sat Sep 26, 2015 8:22 am
by RASHAD
Main.pb updated to support unicode
The code is just to demonstrate how to embed FreeImage.dll and run it from memory :wink:
That is all

Re: Include FreeImage.dll in exe [Windows]

Posted: Sat Sep 26, 2015 7:25 pm
by RASHAD
Hi again
The problem solved by FreeImage Team
Save next as "Main.pb"
Now it is compatible with Ascii & Unicode

Code: Select all

XIncludeFile "freeimage_header.pbi"
XIncludeFile "freeimage_functions.pbi"
XIncludeFile "MemoryModule_4FI.pbi"

DataSection
  DLL:
     IncludeBinary "FreeImage.dll"
EndDataSection

Define hDLL = MemoryLoadLibrary(?DLL)
  
OpenWindow(0, 0,0, 400,400, "FreeImage", #PB_Window_SystemMenu| #PB_Window_ScreenCentered)
  WindowBounds(0,400,400, GetSystemMetrics_(#SM_CXSCREEN)-40, GetSystemMetrics_(#SM_CYSCREEN)-60)
  CanvasGadget(0, 10,10,380,340,#PB_Canvas_Border)
  ContainerGadget(1,10, 360, 380, 30,#PB_Container_Flat)
    ButtonGadget(2, 5,5, 70, 20, "Load Image")
    ButtonGadget(3, 80,5, 70, 20, "Save As ->")
    ComboBoxGadget(4, 155,5, 110, 20)
    AddGadgetItem(4, -1, "PNG")
    AddGadgetItem(4, -1, "Composite PNG")
    AddGadgetItem(4, -1, "Transparent PNG")
    AddGadgetItem(4, -1, "JPG")
    AddGadgetItem(4, -1, "JP2")
    AddGadgetItem(4, -1, "TIF")
    ButtonGadget(5, 335,5, 40, 20, "EXIT")
  CloseGadgetList()
  SetGadgetState(4,0) 
  out$ = GetHomeDirectory() + "temp.bmp"
  DW.f = GetSystemMetrics_(#SM_CXSCREEN)
  DH.f = GetSystemMetrics_(#SM_CYSCREEN)
Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        Break
        
      Case #PB_Event_Gadget
          Select EventGadget()
          Case 2
          FileName$ = OpenFileRequester("SELECT IMAGE","","All supported formats|*.*|TGA image (*.tga)| *.tga|TIF image (*.tif)| *.tif| TIFF image (*.tiff)| *.tiff| PNG image (*.png)| *.png| BMP image (*.bmp)| *.bmp| Icon file (*.ico)| *.ico| JPEG image (*.jpg;*.jpeg;*.jp2)| *.jpg; *.jpeg; *.jp2| GIF image (*.gif)|*.gif",0)
          
          If FileName$ <> ""
              CallFunctionFast(_UnLoad, img)
              CallFunctionFast(_UnLoad, img2)
                CompilerIf #PB_Compiler_Unicode
                  FIF = CallFunctionFast(_GetFIFFromFilenameU ,@FileName$)
                CompilerElse
                  FIF = CallFunctionFast(_GetFIFFromFilename ,@FileName$)
                CompilerEndIf
                
                If FIF >= 0
                  CompilerIf #PB_Compiler_Unicode
                    img = CallFunctionFast(_LoadU ,FIF, @FileName$,0)
                  CompilerElse
                    img = CallFunctionFast(_Load ,FIF, @FileName$,0)
                  CompilerEndIf                  
                  width.f = CallFunctionFast(_GetWidth ,img)
                  height.f = CallFunctionFast(_GetHeight ,img)
                  HScale.f = 1
                  VScale.f = 1
                  If width > (DW -100)
                      HScale = (DW-100)/width
                  EndIf
                  If height > (DH -100)
                      VScale = (DH-100)/height
                  EndIf
                  If HScale < VScale
                     Scale.f = HScale
                  Else
                     Scale.f = VScale                
                  EndIf
                  If Scale < 1
                    width = width * Scale * 0.9
                    height = height * Scale * 0.9
                  EndIf 
                ddb = CreateDIBitmap_(GetDC_(0), CallFunctionFast(_GetInfoHeader,img), #CBM_INIT, CallFunctionFast(_GetBits,img), CallFunctionFast(_GetInfo,img), #DIB_RGB_COLORS)                 
                ResizeWindow(0,(DW - width)/2-10,(DH- height)/2-80 ,width+24,height+64)                
                ResizeGadget(0,WindowWidth(0)/2-width/2-2,WindowHeight(0)/2-height/2-20,width+4,height+4)
                ResizeGadget(1,10,WindowHeight(0)-40,380,30)
                SetGadgetAttribute(0, #PB_Canvas_Image ,ddb)
              Else
                MessageRequester("Error", "Unknown Format",#MB_ICONSTOP|#PB_MessageRequester_Ok)
              EndIf
            Else
              MessageRequester("Error", "No Image Loaded",#MB_ICONERROR|#PB_MessageRequester_Ok)
            EndIf
              
            Case 3
                If FileName$ <> ""         
                    If CallFunctionFast(_GetBPP,img) <> 24
                       img = CallFunctionFast(_ConvertTo24Bits,img)
                    EndIf 
                    If GetGadgetState(4) = 1 Or GetGadgetState(4) = 2
                        SName$ = GetHomeDirectory() + GetFilePart(FileName$ ,#PB_FileSystem_NoExtension) +"_CO.png"
                        img2 = CallFunctionFast(_ColorQuantize,img,#FIQ_WUQUANT)
                        If GetGadgetState(4) = 2
                          SName$ = GetHomeDirectory() + GetFilePart(FileName$ ,#PB_FileSystem_NoExtension) +"_TR.png"
                                         
                          Palette = CallFunctionFast(_GetPalette,img2)
                          Dim Transparency.l(255)
                          For i = 0 To  255
                                Transparency(i) = 255
                                If PeekL(Palette+i) = $FFFFFF
                                   Transparency(i) = 0
                                EndIf
                          Next                  
                          CallFunctionFast(_SetTransparencyTable,img2, Transparency(), 8)
                          ReDim Transparency.l(0)
                        EndIf
                    
                    CompilerIf #PB_Compiler_Unicode
                      CallFunctionFast(_SaveU,#FIF_PNG,img2,@SName$,0)
                    CompilerElse
                      CallFunctionFast(_Save,#FIF_PNG,img2,@SName$,0)
                    CompilerEndIf
                    
                    MessageRequester("Info", "Image Savesd Successfully",#MB_ICONINFORMATION|#PB_MessageRequester_Ok)
                  ElseIf GetGadgetState(4) = 0
                      SName$ = GetHomeDirectory() + GetFilePart(FileName$ ,#PB_FileSystem_NoExtension) +"_NR.png"
                      CompilerIf #PB_Compiler_Unicode
                        CallFunctionFast(_SaveU,#FIF_PNG,img,@SName$,0)
                      CompilerElse
                        CallFunctionFast(_Save,#FIF_PNG,img,@SName$,0)
                      CompilerEndIf
                       MessageRequester("Info", "Image Savesd Successfully",#MB_ICONINFORMATION|#PB_MessageRequester_Ok)
                     EndIf
                   Else
                     MessageRequester("Error", "No Image Loaded",#MB_ICONERROR|#PB_MessageRequester_Ok)
                   EndIf
                   
            Case 5
                End                   
        EndSelect
    EndSelect
ForEver
  
MemoryFreeLibrary(hDLL)

Have fun