node-freeimage v0.24.0
node-freeimage
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.
Usage
var fi = require("node-freeimage");
console.log("FreeImage version:", fi.getVersion());Requirements
- Windows or Linux
- Installed FreeImage dynamic library, version 3.16.0 or above
Installation
1. Install FreeImage
a) Windows
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 __stdcalland replace__stdcallwith__cdecl. - If you get errors referring to
std::maxandstd::min, add#include <algorithm>to the#includelist of the affected files.
After compilation succeeds, copy FreeImage.dll from the Release directory into the node-freeimage directory.
b) Linux
Download the source distribution, and compile it using GCC:
makeAfter successful compilation, install it:
sudo make install2. Install node-freeimage
From npmjs.org:
npm install node-freeimageFrom bitbucket.org:
npm install git+https://bitbucket.org/koldev/node-freeimage.gitTests
npm testContributing
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.
Release History
- 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.
JavaScript version of supported FreeImage functions
It is assumed that node-freeimage has been loaded as follows:
var fi = require("node-freeimage");Bitmap function reference
General functions
FreeImage_Initialise: --- (not needed)FreeImage_DeInitialise: --- (not needed)FreeImage_GetVersion:fi.getVersionFreeImage_GetCopyrightMessage:fi.getCopyrightMessageFreeImage_SetOutputMessage: ---
Bitmap management functions
FreeImage_Allocate:fi.allocateFreeImage_AllocateT:fi.allocateTFreeImage_Load:fi.loadFreeImage_LoadU: ---FreeImage_LoadFromHandle: ---FreeImage_Save:fi.saveFreeImage_SaveU: ---FreeImage_SaveToHandle: ---FreeImage_Clone:fi.cloneFreeImage_Unload:fi.unload
Bitmap information functions
FreeImage_GetImageType:fi.getImageTypeFreeImage_GetColorsUsed:fi.getColorsUsedFreeImage_GetBPP:fi.getBPPFreeImage_GetWidth:fi.getWidthFreeImage_GetHeight:fi.getHeightFreeImage_GetLine:fi.getLineFreeImage_GetPitch:fi.getPitchFreeImage_GetDIBSize:fi.getDIBSizeFreeImage_GetPalette:fi.getPaletteFreeImage_GetDotsPerMeterX:fi.getDotsPerMeterXFreeImage_GetDotsPerMeterY:fi.getDotsPerMeterYFreeImage_SetDotsPerMeterX:fi.setDotsPerMeterXFreeImage_SetDotsPerMeterY:fi.setDotsPerMeterYFreeImage_GetInfoHeader:fi.getInfoHeaderFreeImage_GetInfo:fi.getInfoFreeImage_GetColorType:fi.getColorTypeFreeImage_GetRedMask:fi.getRedMaskFreeImage_GetGreenMask:fi.getGreenMaskFreeImage_GetBlueMask:fi.getBlueMaskFreeImage_GetTransparencyCount:fi.getTransparencyCountFreeImage_GetTransparencyTable:fi.getTransparencyTableFreeImage_SetTransparencyTable:fi.setTransparencyTableFreeImage_SetTransparent:fi.setTransparentFreeImage_IsTransparent:fi.isTransparentFreeImage_SetTransparentIndex:fi.setTransparentIndexFreeImage_GetTransparentIndex:fi.getTransparentIndexFreeImage_HasBackgroundColor:fi.hasBackgroundColorFreeImage_GetBackgroundColor:fi.getBackgroundColorFreeImage_SetBackgroundColor:fi.setBackgroundColorFreeImage_HasPixels:fi.hasPixelsFreeImage_GetThumbnail:fi.getThumbnailFreeImage_SetThumbnail:fi.setThumbnail
Filetype functions
FreeImage_GetFileType:fi.getFileTypeFreeImage_GetFileTypeU: ---FreeImage_GetFileTypeFromHandle: ---FreeImage_GetFileTypeFromMemory: ---
Pixel access functions
FreeImage_GetBits:fi.getBitsFreeImage_GetScanLine:fi.getScanLineFreeImage_GetPixelIndex:fi.getPixelIndexFreeImage_GetPixelColor:fi.getPixelColorFreeImage_SetPixelIndex:fi.setPixelIndexFreeImage_SetPixelColor:fi.setPixelColor
Conversion functions
FreeImage_ConvertTo4Bits:fi.convertTo4BitsFreeImage_ConvertTo8Bits:fi.convertTo8BitsFreeImage_ConvertToGreyscale:fi.convertToGreyscaleFreeImage_ConvertTo16Bits555:fi.convertTo16Bits555FreeImage_ConvertTo16Bits565:fi.convertTo16Bits565FreeImage_ConvertTo24Bits:fi.convertTo24BitsFreeImage_ConvertTo32Bits:fi.convertTo32BitsFreeImage_ColorQuantize:fi.colorQuantizeFreeImage_ColorQuantizeEx:fi.colorQuantizeExFreeImage_Threshold:fi.thresholdFreeImage_Dither:fi.ditherFreeImage_ConvertFromRawBits:fi.convertFromRawBitsFreeImage_ConvertToRawBits:fi.convertToRawBitsFreeImage_ConvertToStandardType:fi.convertToStandardTypeFreeImage_ConvertToType:fi.convertToTypeFreeImage_ConvertToFloat:fi.convertToFloatFreeImage_ConvertToRGBF:fi.convertToRGBFFreeImage_ConvertToUINT16:fi.convertToUINT16FreeImage_ConvertToRGB16:fi.convertToRGB16
Tone mapping operators
FreeImage_ToneMapping:fi.toneMappingFreeImage_TmoDrago03:fi.tmoDrago03FreeImage_TmoReinhard05:fi.tmoReinhard05FreeImage_TmoReinhard05Ex:fi.tmoReinhard05ExFreeImage_TmoFattal02:fi.tmoFattal02
ICC profile functions
FreeImage_GetICCProfile:fi.getICCProfileFreeImage_CreateICCProfile:fi.createICCProfileFreeImage_DestroyICCProfile:fi.destroyICCProfile
Plugin functions
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: ---
Multipage functions
FreeImage_OpenMultiBitmap:fi.openMultiBitmapFreeImage_OpenMultiBitmapFromHandle: ---FreeImage_SaveMultiBitmapToHandle: ---FreeImage_CloseMultiBitmap:fi.closeMultiBitmapFreeImage_GetPageCount:fi.getPageCountFreeImage_AppendPage:fi.appendPageFreeImage_InsertPage:fi.insertPageFreeImage_DeletePage:fi.deletePageFreeImage_LockPage:fi.lockPageFreeImage_UnlockPage:fi.unlockPageFreeImage_MovePage:fi.movePageFreeImage_GetLockedPageNumbers:fi.getLockedPageNumbers
Memory I/O streams
FreeImage_OpenMemory: ---FreeImage_CloseMemory: ---FreeImage_LoadFromMemory: ---FreeImage_SaveToMemory: ---FreeImage_AcquireMemory: ---FreeImage_TellMemory: ---FreeImage_SeekMemory: ---FreeImage_ReadMemory: ---FreeImage_WriteMemory: ---FreeImage_LoadMultiBitmapFromMemory: ---FreeImage_SaveMultiBitmapToMemory: ---
Compression functions
FreeImage_ZLibCompress:fi.zLibCompressFreeImage_ZLibUncompress:fi.zLibUncompressFreeImage_ZLibGZip:fi.zLibGZipFreeImage_ZLibGUnzip:fi.zLibGUnzipFreeImage_ZLibCRC32:fi.zLibCRC32
Helper functions
FreeImage_IsLittleEndian:fi.isLittleEndianFreeImage_LookupX11Color:fi.lookupX11ColorFreeImage_LookupSVGColor:fi.lookupSVGColor
Metadata function reference
Tag creation and destruction
FreeImage_CreateTag:fi.createTagFreeImage_DeleteTag:fi.deleteTagFreeImage_CloneTag:fi.cloneTag
Tag accessors
FreeImage_GetTagKey:fi.getTagKeyFreeImage_GetTagDescription:fi.getTagDescriptionFreeImage_GetTagID:fi.getTagIDFreeImage_GetTagType:fi.getTagTypeFreeImage_GetTagCount:fi.getTagCountFreeImage_GetTagLength:fi.getTagLengthFreeImage_GetTagValue:fi.getTagValueFreeImage_SetTagKey:fi.setTagKeyFreeImage_SetTagDescription:fi.setTagDescriptionFreeImage_SetTagID:fi.setTagIDFreeImage_SetTagType:fi.setTagTypeFreeImage_SetTagCount:fi.setTagCountFreeImage_SetTagLength:fi.setTagLengthFreeImage_SetTagValue:fi.setTagValue
Metadata iterator
FreeImage_FindFirstMetadata:fi.findFirstMetadataFreeImage_FindNextMetadata:fi.findNextMetadataFreeImage_FindCloseMetadata:fi.findCloseMetadata
Metadata accessors
FreeImage_GetMetadata:fi.getMetadataFreeImage_SetMetadata:fi.setMetadata
Metadata helper functions
FreeImage_GetMetadataCount:fi.getMetadataCountFreeImage_CloneMetadata:fi.cloneMetadataFreeImage_TagToString:fi.tagToString
Toolkit function reference
Rotation and flipping
FreeImage_Rotate:fi.rotateFreeImage_RotateEx:fi.rotateFreeImage_FlipHorizontal:fi.flipHorizontalFreeImage_FlipVertical:fi.flipVertical
Upsampling / downsampling
FreeImage_Rescale:fi.rescaleFreeImage_MakeThumbnail:fi.makeThumbnail
Color manipulation
FreeImage_AdjustCurve:fi.adjustCurveFreeImage_AdjustGamma:fi.adjustGammaFreeImage_AdjustBrightness:fi.adjustBrightnessFreeImage_AdjustContrast:fi.adjustContrastFreeImage_Invert:fi.invertFreeImage_GetHistogram:fi.getHistogramFreeImage_GetAdjustColorsLookupTable:fi.getAdjustColorsLookupTableFreeImage_AdjustColors:fi.adjustColorsFreeImage_ApplyColorMapping:fi.applyColorMappingFreeImage_SwapColors:fi.swapColorsFreeImage_ApplyPaletteIndexMapping:fi.applyPaletteIndexMappingFreeImage_SwapPaletteIndices:fi.swapPaletteIndices
Channel processing
FreeImage_GetChannel:fi.getChannelFreeImage_SetChannel:fi.setChannelFreeImage_GetComplexChannel:fi.getComplexChannelFreeImage_SetComplexChannel:fi.setComplexChannel
Copy / Paste / Composite routines
FreeImage_Copy:fi.copyFreeImage_Paste:fi.pasteFreeImage_Composite:fi.compositeFreeImage_PreMultiplyWithAlpha:fi.preMultiplyWithAlpha
JPEG lossless transformations
FreeImage_JPEGTransform:fi.jpegTransformFreeImage_JPEGTransformU: ---FreeImage_JPEGCrop:fi.jpegCropFreeImage_JPEGCrop: ---FreeImage_JPEGTransformCombined:fi.jpegTransformCombinedFreeImage_JPEGTransformCombinedU: ---FreeImage_JPEGTransformCombinedFromMemory: ---FreeImage_JPEGTransformFromHandle: ---
Background filling
FreeImage_FillBackground:fi.fillBackgroundFreeImage_EnlargeCanvas:fi.enlargeCanvasFreeImage_AllocateEx:fi.allocateExFreeImage_AllocateExT:fi.allocateExT
Miscellaneous algorithms
FreeImage_MultigridPoissonSolver:fi.multigridPoissonSolver
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago