Node.js wrapper around FreeImage. This package uses FFI, so the FreeImage dynamic library must be installed, see below. If you have any problems, questions or suggestions, please feel free to contact me.
var fi = require("node-freeimage");
console.log("FreeImage version:", fi.getVersion());
- Windows or Linux
- Installed FreeImage dynamic library, version 3.16.0 or above
The FreeImage binary distribution won't work. All exported functions were compiled using the __stdcall
calling convention and have names in the DLL like _FreeImage_GetVersion@0
. The node-freeimage
package assumes that function names are not mangled.
You need to download the source distribution, and compile it using Visual Studio. There are solution files for VS2003, VS2005 and VS2008, but more modern VS versions also work, just open VS2008.sln and let VS upgrade every project. The following settings are needed:
- Select Release Mode.
- On 32-bit Windows, compile for 32-bit (it's the default), but on 64-bit Windows, compile for 64-bit (MSDN).
- In
FreeImage.h
, find this:#define DLL_CALLCONV __stdcall
and replace__stdcall
with__cdecl
. - If you get errors referring to
std::max
andstd::min
, add#include <algorithm>
to the#include
list of the affected files.
After compilation succeeds, copy FreeImage.dll
from the Release
directory into the node-freeimage
directory.
Download the source distribution, and compile it using GCC:
make
After successful compilation, install it:
sudo make install
From npmjs.org:
npm install node-freeimage
From bitbucket.org:
npm install git+https://bitbucket.org/koldev/node-freeimage.git
npm test
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code.
- 0.1.0 Initial release.
- 0.2.0 Added the desciption of installation steps.
- 0.3.0 Added assertions and unit tests for bitmap information functions.
- 0.4.0 Added assertions and unit tests for file type functions.
- 0.5.0 Added assertions and unit tests for pixel access functions.
- 0.6.0 Added assertions and unit tests for conversion functions.
- 0.7.0 Added assertions and unit tests for tone mapping operators.
- 0.8.0 Added assertions and unit tests for ICC profile functions.
- 0.9.0 Added assertions and unit tests for multipage functions.
- 0.10.0 Added assertions and unit tests for compression functions.
- 0.11.0 Added assertions and unit tests for helper functions.
- 0.12.0 Added assertions and unit tests for tag creation and destruction functions.
- 0.13.0 Added assertions and unit tests for tag accessor functions.
- 0.14.0 Added assertions and unit tests for metadata iterator functions.
- 0.15.0 Added assertions and unit tests for metadata accessor functions.
- 0.16.0 Added assertions and unit tests for metadata helper functions.
- 0.17.0 Added assertions and unit tests for rotation and flipping functions.
- 0.18.0 Added assertions and unit tests for up- and downsampling functions.
- 0.19.0 Added assertions and unit tests for color manipulation functions.
- 0.20.0 Added assertions and unit tests for channel processing functions.
- 0.21.0 Added assertions and unit tests for copy, paste, and composite routines.
- 0.22.0 Added assertions and unit tests for JPEG transformation functions.
- 0.23.0 Added assertions and unit tests for background filling functions.
- 0.24.0 Added assertions and unit tests for miscellaneous functions.
It is assumed that node-freeimage
has been loaded as follows:
var fi = require("node-freeimage");
-
FreeImage_Initialise
: --- (not needed) -
FreeImage_DeInitialise
: --- (not needed) -
FreeImage_GetVersion
:fi.getVersion
-
FreeImage_GetCopyrightMessage
:fi.getCopyrightMessage
-
FreeImage_SetOutputMessage
: ---
-
FreeImage_Allocate
:fi.allocate
-
FreeImage_AllocateT
:fi.allocateT
-
FreeImage_Load
:fi.load
-
FreeImage_LoadU
: --- -
FreeImage_LoadFromHandle
: --- -
FreeImage_Save
:fi.save
-
FreeImage_SaveU
: --- -
FreeImage_SaveToHandle
: --- -
FreeImage_Clone
:fi.clone
-
FreeImage_Unload
:fi.unload
-
FreeImage_GetImageType
:fi.getImageType
-
FreeImage_GetColorsUsed
:fi.getColorsUsed
-
FreeImage_GetBPP
:fi.getBPP
-
FreeImage_GetWidth
:fi.getWidth
-
FreeImage_GetHeight
:fi.getHeight
-
FreeImage_GetLine
:fi.getLine
-
FreeImage_GetPitch
:fi.getPitch
-
FreeImage_GetDIBSize
:fi.getDIBSize
-
FreeImage_GetPalette
:fi.getPalette
-
FreeImage_GetDotsPerMeterX
:fi.getDotsPerMeterX
-
FreeImage_GetDotsPerMeterY
:fi.getDotsPerMeterY
-
FreeImage_SetDotsPerMeterX
:fi.setDotsPerMeterX
-
FreeImage_SetDotsPerMeterY
:fi.setDotsPerMeterY
-
FreeImage_GetInfoHeader
:fi.getInfoHeader
-
FreeImage_GetInfo
:fi.getInfo
-
FreeImage_GetColorType
:fi.getColorType
-
FreeImage_GetRedMask
:fi.getRedMask
-
FreeImage_GetGreenMask
:fi.getGreenMask
-
FreeImage_GetBlueMask
:fi.getBlueMask
-
FreeImage_GetTransparencyCount
:fi.getTransparencyCount
-
FreeImage_GetTransparencyTable
:fi.getTransparencyTable
-
FreeImage_SetTransparencyTable
:fi.setTransparencyTable
-
FreeImage_SetTransparent
:fi.setTransparent
-
FreeImage_IsTransparent
:fi.isTransparent
-
FreeImage_SetTransparentIndex
:fi.setTransparentIndex
-
FreeImage_GetTransparentIndex
:fi.getTransparentIndex
-
FreeImage_HasBackgroundColor
:fi.hasBackgroundColor
-
FreeImage_GetBackgroundColor
:fi.getBackgroundColor
-
FreeImage_SetBackgroundColor
:fi.setBackgroundColor
-
FreeImage_HasPixels
:fi.hasPixels
-
FreeImage_GetThumbnail
:fi.getThumbnail
-
FreeImage_SetThumbnail
:fi.setThumbnail
-
FreeImage_GetFileType
:fi.getFileType
-
FreeImage_GetFileTypeU
: --- -
FreeImage_GetFileTypeFromHandle
: --- -
FreeImage_GetFileTypeFromMemory
: ---
-
FreeImage_GetBits
:fi.getBits
-
FreeImage_GetScanLine
:fi.getScanLine
-
FreeImage_GetPixelIndex
:fi.getPixelIndex
-
FreeImage_GetPixelColor
:fi.getPixelColor
-
FreeImage_SetPixelIndex
:fi.setPixelIndex
-
FreeImage_SetPixelColor
:fi.setPixelColor
-
FreeImage_ConvertTo4Bits
:fi.convertTo4Bits
-
FreeImage_ConvertTo8Bits
:fi.convertTo8Bits
-
FreeImage_ConvertToGreyscale
:fi.convertToGreyscale
-
FreeImage_ConvertTo16Bits555
:fi.convertTo16Bits555
-
FreeImage_ConvertTo16Bits565
:fi.convertTo16Bits565
-
FreeImage_ConvertTo24Bits
:fi.convertTo24Bits
-
FreeImage_ConvertTo32Bits
:fi.convertTo32Bits
-
FreeImage_ColorQuantize
:fi.colorQuantize
-
FreeImage_ColorQuantizeEx
:fi.colorQuantizeEx
-
FreeImage_Threshold
:fi.threshold
-
FreeImage_Dither
:fi.dither
-
FreeImage_ConvertFromRawBits
:fi.convertFromRawBits
-
FreeImage_ConvertToRawBits
:fi.convertToRawBits
-
FreeImage_ConvertToStandardType
:fi.convertToStandardType
-
FreeImage_ConvertToType
:fi.convertToType
-
FreeImage_ConvertToFloat
:fi.convertToFloat
-
FreeImage_ConvertToRGBF
:fi.convertToRGBF
-
FreeImage_ConvertToUINT16
:fi.convertToUINT16
-
FreeImage_ConvertToRGB16
:fi.convertToRGB16
-
FreeImage_ToneMapping
:fi.toneMapping
-
FreeImage_TmoDrago03
:fi.tmoDrago03
-
FreeImage_TmoReinhard05
:fi.tmoReinhard05
-
FreeImage_TmoReinhard05Ex
:fi.tmoReinhard05Ex
-
FreeImage_TmoFattal02
:fi.tmoFattal02
-
FreeImage_GetICCProfile
:fi.getICCProfile
-
FreeImage_CreateICCProfile
:fi.createICCProfile
-
FreeImage_DestroyICCProfile
:fi.destroyICCProfile
-
FreeImage_GetFIFCount
: --- -
FreeImage_SetPluginEnabled
: --- -
FreeImage_IsPluginEnabled
: --- -
FreeImage_GetFIFFromFormat
: --- -
FreeImage_GetFIFFromMime
: --- -
FreeImage_GetFIFMimeType
: --- -
FreeImage_GetFormatFromFIF
: --- -
FreeImage_GetFIFExtensionList
: --- -
FreeImage_GetFIFDescription
: --- -
FreeImage_GetFIFRegExpr
: --- -
FreeImage_GetFIFFromFilename
: --- -
FreeImage_GetFIFFromFilenameU
: --- -
FreeImage_FIFSupportsReading
: --- -
FreeImage_FIFSupportsWriting
: --- -
FreeImage_FIFSupportsExportType
: --- -
FreeImage_FIFSupportsExportBPP
: --- -
FreeImage_FIFSupportsICCProfiles
: --- -
FreeImage_FIFSupportsNoPixels
: --- -
FreeImage_RegisterLocalPlugin
: --- -
FreeImage_RegisterExternalPlugin
: ---
-
FreeImage_OpenMultiBitmap
:fi.openMultiBitmap
-
FreeImage_OpenMultiBitmapFromHandle
: --- -
FreeImage_SaveMultiBitmapToHandle
: --- -
FreeImage_CloseMultiBitmap
:fi.closeMultiBitmap
-
FreeImage_GetPageCount
:fi.getPageCount
-
FreeImage_AppendPage
:fi.appendPage
-
FreeImage_InsertPage
:fi.insertPage
-
FreeImage_DeletePage
:fi.deletePage
-
FreeImage_LockPage
:fi.lockPage
-
FreeImage_UnlockPage
:fi.unlockPage
-
FreeImage_MovePage
:fi.movePage
-
FreeImage_GetLockedPageNumbers
:fi.getLockedPageNumbers
-
FreeImage_OpenMemory
: --- -
FreeImage_CloseMemory
: --- -
FreeImage_LoadFromMemory
: --- -
FreeImage_SaveToMemory
: --- -
FreeImage_AcquireMemory
: --- -
FreeImage_TellMemory
: --- -
FreeImage_SeekMemory
: --- -
FreeImage_ReadMemory
: --- -
FreeImage_WriteMemory
: --- -
FreeImage_LoadMultiBitmapFromMemory
: --- -
FreeImage_SaveMultiBitmapToMemory
: ---
-
FreeImage_ZLibCompress
:fi.zLibCompress
-
FreeImage_ZLibUncompress
:fi.zLibUncompress
-
FreeImage_ZLibGZip
:fi.zLibGZip
-
FreeImage_ZLibGUnzip
:fi.zLibGUnzip
-
FreeImage_ZLibCRC32
:fi.zLibCRC32
-
FreeImage_IsLittleEndian
:fi.isLittleEndian
-
FreeImage_LookupX11Color
:fi.lookupX11Color
-
FreeImage_LookupSVGColor
:fi.lookupSVGColor
-
FreeImage_CreateTag
:fi.createTag
-
FreeImage_DeleteTag
:fi.deleteTag
-
FreeImage_CloneTag
:fi.cloneTag
-
FreeImage_GetTagKey
:fi.getTagKey
-
FreeImage_GetTagDescription
:fi.getTagDescription
-
FreeImage_GetTagID
:fi.getTagID
-
FreeImage_GetTagType
:fi.getTagType
-
FreeImage_GetTagCount
:fi.getTagCount
-
FreeImage_GetTagLength
:fi.getTagLength
-
FreeImage_GetTagValue
:fi.getTagValue
-
FreeImage_SetTagKey
:fi.setTagKey
-
FreeImage_SetTagDescription
:fi.setTagDescription
-
FreeImage_SetTagID
:fi.setTagID
-
FreeImage_SetTagType
:fi.setTagType
-
FreeImage_SetTagCount
:fi.setTagCount
-
FreeImage_SetTagLength
:fi.setTagLength
-
FreeImage_SetTagValue
:fi.setTagValue
-
FreeImage_FindFirstMetadata
:fi.findFirstMetadata
-
FreeImage_FindNextMetadata
:fi.findNextMetadata
-
FreeImage_FindCloseMetadata
:fi.findCloseMetadata
-
FreeImage_GetMetadata
:fi.getMetadata
-
FreeImage_SetMetadata
:fi.setMetadata
-
FreeImage_GetMetadataCount
:fi.getMetadataCount
-
FreeImage_CloneMetadata
:fi.cloneMetadata
-
FreeImage_TagToString
:fi.tagToString
-
FreeImage_Rotate
:fi.rotate
-
FreeImage_RotateEx
:fi.rotate
-
FreeImage_FlipHorizontal
:fi.flipHorizontal
-
FreeImage_FlipVertical
:fi.flipVertical
-
FreeImage_Rescale
:fi.rescale
-
FreeImage_MakeThumbnail
:fi.makeThumbnail
-
FreeImage_AdjustCurve
:fi.adjustCurve
-
FreeImage_AdjustGamma
:fi.adjustGamma
-
FreeImage_AdjustBrightness
:fi.adjustBrightness
-
FreeImage_AdjustContrast
:fi.adjustContrast
-
FreeImage_Invert
:fi.invert
-
FreeImage_GetHistogram
:fi.getHistogram
-
FreeImage_GetAdjustColorsLookupTable
:fi.getAdjustColorsLookupTable
-
FreeImage_AdjustColors
:fi.adjustColors
-
FreeImage_ApplyColorMapping
:fi.applyColorMapping
-
FreeImage_SwapColors
:fi.swapColors
-
FreeImage_ApplyPaletteIndexMapping
:fi.applyPaletteIndexMapping
-
FreeImage_SwapPaletteIndices
:fi.swapPaletteIndices
-
FreeImage_GetChannel
:fi.getChannel
-
FreeImage_SetChannel
:fi.setChannel
-
FreeImage_GetComplexChannel
:fi.getComplexChannel
-
FreeImage_SetComplexChannel
:fi.setComplexChannel
-
FreeImage_Copy
:fi.copy
-
FreeImage_Paste
:fi.paste
-
FreeImage_Composite
:fi.composite
-
FreeImage_PreMultiplyWithAlpha
:fi.preMultiplyWithAlpha
-
FreeImage_JPEGTransform
:fi.jpegTransform
-
FreeImage_JPEGTransformU
: --- -
FreeImage_JPEGCrop
:fi.jpegCrop
-
FreeImage_JPEGCrop
: --- -
FreeImage_JPEGTransformCombined
:fi.jpegTransformCombined
-
FreeImage_JPEGTransformCombinedU
: --- -
FreeImage_JPEGTransformCombinedFromMemory
: --- -
FreeImage_JPEGTransformFromHandle
: ---
-
FreeImage_FillBackground
:fi.fillBackground
-
FreeImage_EnlargeCanvas
:fi.enlargeCanvas
-
FreeImage_AllocateEx
:fi.allocateEx
-
FreeImage_AllocateExT
:fi.allocateExT
-
FreeImage_MultigridPoissonSolver
:fi.multigridPoissonSolver