Include FreeImage.dll in exe [Windows]

Share your advanced PureBasic knowledge/code with the community.
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4954
Joined: Sun Apr 12, 2009 6:27 am

Include FreeImage.dll in exe [Windows]

Post 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)

Last edited by RASHAD on Mon Sep 21, 2015 8:12 pm, edited 1 time in total.
Egypt my love
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4954
Joined: Sun Apr 12, 2009 6:27 am

Re: Include FreeImage.dll in exe [Windows]

Post 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
Egypt my love
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4954
Joined: Sun Apr 12, 2009 6:27 am

Re: Include FreeImage.dll in exe [Windows]

Post 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

Egypt my love
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4954
Joined: Sun Apr 12, 2009 6:27 am

Re: Include FreeImage.dll in exe [Windows]

Post 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
Last edited by RASHAD on Sat Sep 26, 2015 8:17 am, edited 1 time in total.
Egypt my love
firace
Addict
Addict
Posts: 946
Joined: Wed Nov 09, 2011 8:58 am

Re: Include FreeImage.dll in exe [Windows]

Post 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?
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4954
Joined: Sun Apr 12, 2009 6:27 am

Re: Include FreeImage.dll in exe [Windows]

Post 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
Egypt my love
User avatar
ts-soft
Always Here
Always Here
Posts: 5756
Joined: Thu Jun 24, 2004 2:44 pm
Location: Berlin - Germany

Re: Include FreeImage.dll in exe [Windows]

Post by ts-soft »

to hear nicely, which mine are still used old tools and function :wink:
PureBasic 5.73 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Old bugs good, new bugs bad! Updates are evil: might fix old bugs and introduce no new ones.
Image
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4954
Joined: Sun Apr 12, 2009 6:27 am

Re: Include FreeImage.dll in exe [Windows]

Post 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
Egypt my love
firace
Addict
Addict
Posts: 946
Joined: Wed Nov 09, 2011 8:58 am

Re: Include FreeImage.dll in exe [Windows]

Post by firace »

Great stuff! Both of you are sharing so much stuff here it's amazing.
kvitaliy
Enthusiast
Enthusiast
Posts: 162
Joined: Mon May 10, 2010 4:02 pm

Re: Include FreeImage.dll in exe [Windows]

Post by kvitaliy »

Image
Bmp and JPG and all supported formats! :D ( in Unicode mode)
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4954
Joined: Sun Apr 12, 2009 6:27 am

Re: Include FreeImage.dll in exe [Windows]

Post 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
Egypt my love
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4954
Joined: Sun Apr 12, 2009 6:27 am

Re: Include FreeImage.dll in exe [Windows]

Post 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
Egypt my love
Post Reply