As the name says... :) The link at BlitzCoder is dead...
Where can I download the FreeImage.dll wrapper ?
BlitzPlus Forums/BlitzPlus Programming/Where can I download the FreeImage.dll wrapper ? I can't find it in the spot I downloaded it before. Hmm
The reason I got rid of it was because I couldn't get BP to recognise the userlib.
The reason I got rid of it was because I couldn't get BP to recognise the userlib.
I don't know if there was a specific wrapper made for it. I think maybe there were three different ones, one of which I wrote. Anyway here's the one I have. The comments seem to ber in my style so I think I wrote it.
; ----------------------------------------------------------------------------------------------------------------------------------- ; To use these functions you must create a freeimage.decls file in your decls directory with the following lines: ; ; .lib "FreeImage.dll" ; ; FIAllocate%( Width%,Height%,BPP%,RedMask%,GreenMask%,BlueMask% ) : "_FreeImage_Allocate@24" ; FILoad%( ImageType%,File$,Mode% ) : "_FreeImage_Load@12" ; FISave%( ImapeType%,FIBITMAP%,File$,Flags% ) : "_FreeImage_Save@16" ; FIUnload%( FIBITMAP% ) : "_FreeImage_Unload@4" ; FIGetDescription$( FREE_IMAGE_FORMAT% ) : "_FreeImage_GetFIFDescription@4" ; FIGetType%( File$,Default% ) : "_FreeImage_GetFileType@8" ; FIToBank( Bank*,FIBITMAP%,Pitch%,Depth%,Red_Mask%,Green_Mask%,Blue_Mask%,TopDown% ) : "_FreeImage_ConvertToRawBits@32" ; FIGuessType%( File$ ) : "_FreeImage_GetFIFFromFilename@4" ; FIGetClrUsed%( FIBITMAP% ) : "_FreeImage_GetColorsUsed@4" ; FIGetBitStart%( FIBITMAP% ) : "_FreeImage_GetBits@4" ; FIGetScanLine%( FIBITMAP%,ScanLine% ) : "_FreeImage_Get@8" ; FIGetDepth%( FIBITMAP% ) : "_FreeImage_GetBPP@4" ; FIGetWidth%( FIBITMAP% ) : "_FreeImage_GetWidth@4" ; FIGetBits%( FIBITMAP% ) : "_FreeImage_GetBits@4" ; FIGetHeight%( FIBITMAP% ) : "_FreeImage_GetHeight@4" ; FIGetLine%( FIBITMAP% ) : "_FreeImage_GetLine@4" ; FIGetPitch%( FIBITMAP% ) : "_FreeImage_GetPitch@4" ; FIGetSize%( FIBITMAP% ) : "_FreeImage_GetDIBSize@4" ; FIGetPalette%( FIBITMAP% ) : "_FreeImage_GetPalette@4" ; FIGetDPMX%( FIBITMAP% ) : "_FreeImage_GetDotsPerMeterX@4" ; FIGetDPMY%( FIBITMAP% ) : "_FreeImage_GetDotsPerMeterY@4" ; FIGetHeader%( FIBITMAP% ) : "_FreeImage_GetInfoHeader@4" ; FIGetInfo%( FIBITMAP% ) : "_FreeImage_GetInfo@4" ; FIGetColorType%( FIBITMAP% ) : "_FreeImage_GetColorType@4" ; FIGetRedMask%( FIBITMAP% ) : "_FreeImage_GetRedMask@4" ; FIGetGreenMask%( FIBITMAP% ) : "_FreeImage_GetGreenMask@4" ; FIGetBlueMask%( FIBITMAP% ) : "_FreeImage_GetBlueMask@4" ; FIGetTranCount%( FIBITMAP% ) : "_FreeImage_GetTransparencyCount@4" ; FIGetTranTable%( FIBITMAP% ) : "_FreeImage_GetTransparencyTable@4" ; FISetTran( FIBITMAP%,Flag% ) : "_FreeImage_SetTransparent@8" ; FIIsTran%( FIBITMAP% ) : "_FreeImage_IsTransparent@4" ; FIConvert8Bits%( FIBITMAP% ) : "_FreeImage_ConvertTo8Bits@4" ; FIConvert555%( FIBITMAP% ) : "_FreeImage_ConvertTo16Bits555@4" ; FIConvert565%( FIBITMAP% ) : "_FreeImage_ConvertTo16Bits565@4" ; FIConvert24Bits%( FIBITMAP% ) : "_FreeImage_ConvertTo24Bits@4" ; FIConvert32Bits%( FIBITMAP% ) : "_FreeImage_ConvertTo32Bits@4" ; FIColorQuantize%( FIBITMAP%,Flag% ) : "_FreeImage_ColorQuantize@8" ; FIThreshold%( FIBITMAP%,Flag% ) : "_FreeImage_Threshold@8" ; FIDither%( FIBITMAP%,Algo% ) : "_FreeImage_Dither@8" ; FIFromBank%( Bank*,Width%,Height%,Pitch%,Depth%,RedMask%,GreenMask%,BlueMask%,TopDown% ) : "_FreeImage_ConvertFromRawBits@36" ; FIClone%(DIB%) : "_FreeImage_Clone@4" ; ; ----------------------------------------------------------------------------------------------------------------------------------- ; Freeimage supports the following file types: ; ; BMP files [reading, writing] ; TARGA files [reading, writing] ; TIFF files [reading, writing] ; JPEG/JIF files [reading, writing] ; GIF files [reading, writing] ; PNG files [reading, writing] ; WBMP files [reading, writing] ; ICO files [reading, writing] ; PBM files [reading, writing] ; PGM files [reading, writing] ; PPM files [reading, writing] ; XPM files [reading, writing] ; ; DDS files [reading] ; PhotoShop files [reading] ; Kodak PhotoCD [reading] ; PCX files [reading] ; Dr. Halo files [reading] ; IFF files [reading] ; JNG files [reading] ; KOALA files [reading] ; LBM files [reading] ; MNG files [reading] ; Sun RAS files [reading] ; XBM files [reading] ; ----------------------------------------------------------------------------------------------------------------------------------- ; Image formats: Const FIF_UNKNOWN = -1 Const FIF_BMP = 0 Const FIF_ICO = 1 Const FIF_JPEG = 2 Const FIF_JNG = 3 Const FIF_KOALA = 4 Const FIF_LBM = 5 Const FIF_IFF = 5 Const FIF_MNG = 6 Const FIF_PBM = 7 Const FIF_PBMRAW = 8 Const FIF_PCD = 9 Const FIF_PCX = 10 Const FIF_PGM = 11 Const FIF_PGMRAW = 12 Const FIF_PNG = 13 Const FIF_PPM = 14 Const FIF_PPMRAW = 15 Const FIF_RAS = 16 Const FIF_TARGA = 17 Const FIF_TIFF = 18 Const FIF_WBMP = 19 Const FIF_PSD = 20 Const FIF_CUT = 21 Const FIF_XBM = 22 Const FIF_XPM = 23 Const FIF_DDS = 24 Const FIF_GIF = 25 ; Compression settings: Const FIC_DEFAULT = $0 Const FIC_BMP_RLE = $1 Const FIC_JPEG_SUPERB = $80 ; 100% quality Const FIC_JPEG_GOOD = $100 ; 75% quality (default) Const FIC_JPEG_NORMAL = $200 ; 50% quality Const FIC_JPEG_AVERAGE = $400 ; 25% quality Const FIC_JPEG_BAD = $800 ; 10% quality Const FIC_TIFF_PACKBITS = $100 Const FIC_TIFF_DEFLATE = $200 Const FIC_TIFF_ADOBE_DEFLATE = $400 Const FIC_TIFF_NONE = $800 ; Image loading flags: Const JPEG_ACCURATE = 2 ; Image formats: Global FIB_BitDepth[4] Global FIB_RedMask[4] Global FIB_GreenMask[4] Global FIB_BlueMask[4] FIB_BitDepth[1] = 16 FIB_RedMask[1] = $1F FIB_GreenMask[1] = $7E0 FIB_BlueMask[1] = $F800 FIB_BitDepth[2] = 16 FIB_RedMask[2] = $1F FIB_GreenMask[2] = $3E0 FIB_BlueMask[2] = $7C00 FIB_BitDepth[3] = 24 FIB_RedMask[3] = $FF0000 FIB_GreenMask[3] = $FF00 FIB_BlueMask[3] = $FF FIB_BitDepth[4] = 32 FIB_RedMask[4] = $FF0000 FIB_GreenMask[4] = $FF00 FIB_BlueMask[4] = $FF ; ----------------------------------------------------------------------------------------------------------------------------------- ; This function loads an image into Blitz using the Freeimage library. ; ----------------------------------------------------------------------------------------------------------------------------------- Function FILoadImage(Filename$) Local FI_FileType Local FI_Bitmap Local FI_Width, FI_Height Local DestImage, DestImageBuffer Local DestImageBank, DestImagePitch, DestImageFormat Local DestImageDepth, DestImageRedMask, DestImageGreenMask, DestImageBlueMask ; Get the filetype. ; First try to get the file type from the file header. ; If that fails, try to guess the filetype from the file extension. ; If that fails, return from function with failure. FI_FileType = FIGetType(Filename$, 0) If FI_FileType = -1 FI_FileType = FIGuessType(Filename$) If FI_FileType = -1 Return EndIf ; Attempt to load the image. If the image fails to load, return from the function. If FI_FileType = FIF_JPEG ;FI_Bitmap = FILoad(FI_FileType, Filename$, JPEG_ACCURATE) FI_Bitmap = FILoad(FI_FileType, Filename$, 0) Else FI_Bitmap = FILoad(FI_FileType, Filename$, 0) EndIf If Not FI_Bitmap Return ; Get the width and height of the image. FI_Width = FIGetWidth(FI_Bitmap) FI_Height = FIGetHeight(FI_Bitmap) ; Create an image in Blitz with the same width and height as the image loaded with freeimage. DestImage = CreateImage(FI_Width, FI_Height, 1, 1) DestImageBuffer = ImageBuffer(DestImage) ; Copy the FI_Image to the Blitz image. LockBuffer DestImageBuffer DestImageBank = LockedPixels(DestImageBuffer) DestImagePitch = LockedPitch(DestImageBuffer) DestImageFormat = LockedFormat(DestImageBuffer) DestImageDepth = FIB_BitDepth[DestImageFormat] DestimageRedMask = FIB_RedMask[DestImageFormat] DestimageGreenMask = FIB_GreenMask[DestImageFormat] DestimageBlueMask = FIB_BlueMask[DestImageFormat] FIToBank(DestImageBank, FI_Bitmap, DestImagePitch, DestImageDepth, DestimageRedMask, DestimageGreenMask, DestimageBlueMask, 0) UnlockBuffer DestImageBuffer ; Free the loaded image. FIUnload FI_Bitmap ; Return the pointer to the new Blitz image. Return DestImage End Function ; ----------------------------------------------------------------------------------------------------------------------------------- ; This function saves an image from Blitz using the Freeimage library. ; For JPEG, can specify integer 0..100 for compression to indicate desired quality. ; ----------------------------------------------------------------------------------------------------------------------------------- Function FISaveImage(SrcImage, Filename$, FI_FileType=FIF_UNKNOWN, FI_Compression=0) Local FI_Bitmap Local Success If SrcImage <> 0 ; If FI_FileType is unknown, attempt to determine the filetype the user is trying to save from the file extension. ; Return from the function if fail. If FI_FileType = FIF_UNKNOWN FI_FileType = FIGuessType(Filename$) If FI_FileType = FIF_UNKNOWN Return EndIf ; Is saving supported for this format? ; Create a FI bitmap from the source image. FI_Bitmap = FIConvertImageToFIB(SrcImage) ; Attempt to save the bitmap using the specified format. Success = FISave(FI_FileType, FI_Bitmap, Filename$, FI_Compression) If Not Success Then Notify "Unable to save image:" + Chr(10) + Filename$, True ; Free the FI bitmap. FIUnload(FI_Bitmap) EndIf End Function ; ----------------------------------------------------------------------------------------------------------------------------------- ; This function takes a Blitz image as input, and returns a FI bitmap. ; ----------------------------------------------------------------------------------------------------------------------------------- Function FIConvertImageToFIB(SrcImage) Local SrcBuffer Local SrcWidth, SrcHeight Local SrcBank, SrcPitch, SrcFormat Local SrcDepth Local SrcRedMask, SrcGreenMask, SrcBlueMask Local FI_Bitmap, FI_Bitmap24 ; Convert the Blitz image to an FI_Bitmap: SrcBuffer = ImageBuffer(SrcImage) LockBuffer SrcBuffer SrcWidth = ImageWidth(SrcImage) SrcHeight = ImageHeight(SrcImage) SrcBank = LockedPixels(SrcBuffer) SrcPitch = LockedPitch(SrcBuffer) SrcFormat = LockedFormat(SrcBuffer) SrcDepth = FIB_BitDepth[SrcFormat] SrcRedMask = FIB_RedMask[SrcFormat] SrcGreenMask = FIB_GreenMask[SrcFormat] SrcBlueMask = FIB_BlueMask[SrcFormat] FI_Bitmap = FIFromBank(SrcBank, SrcWidth, SrcHeight, SrcPitch, SrcDepth, SrcRedMask, SrcGreenMask, SrcBlueMask,0) UnlockBuffer SrcBuffer ; Convert FI_Bitmap to 24bit if neccessary: If FIGetDepth(FI_Bitmap) <> 24 FI_Bitmap24 = FIConvert24Bits(FI_Bitmap) If FI_Bitmap24 FIUnload(FI_Bitmap) FI_Bitmap = FI_Bitmap24 EndIf EndIf ; Return FI_Bitmap: Return FI_Bitmap End Function
Thanks :)