
Product
Introducing Socket Firewall Enterprise: Flexible, Configurable Protection for Modern Package Ecosystems
Socket Firewall Enterprise is now available with flexible deployment, configurable policies, and expanded language support.
graphicsmagick-stream
Advanced tools
Fast convertion/scaling of images using a pool of long lived graphicsmagick processes
Fast convertion/scaling of images using a pool of long lived graphicsmagick processes
npm install graphicsmagick-stream
It works by spawning and reusing a custom graphicsmagick processes (see src/) that accepts images over stdin and pipes out the converted result over stdout
var gm = require('graphicsmagick-stream')
var fs = require('fs')
var convert = gm({
pool: 5, // how many graphicsmagick processes to use
format: 'png', // format to convert to
scale: {
width: 200, // scale input to this width
height: 200, // scale input this height
type: 'contain' // scale type (either contain/cover/fixed)
},
crop: {
width: 200, // crop input to this width
height: 200, // crop input this height
x: 0, // crop using this x offset
y: 0 // crop using this y offset
},
page: [1,5], // only render page 1 to 5 (for pdfs)
// set to a single number if you only want to render one page
// or omit if you want all pages
rotate: 'auto', // auto rotate image based on exif data
// or use rotate:degrees
density: 300, // set the image density. useful when converting pdf to images
split: false, // when converting pdfs into images it is possible to split
// into multiple pages. If set to true the resulting file will
// be a tar containing all the images.
tar: false // stream a tar containing the image. This is forced to `true`
// if split is set to `true`
})
fs.createReadStream('input.jpg')
.pipe(convert({
// override any of the above options here
}))
.pipe(fs.createWriteStream('output.jpg'))
You do not need to set all the options. If you only want to scale an image do
var stream = convert({
scale: {
width: 400,
height: 300
}
})
You can also use it to get metadata info about an image using convert.info
var info = convert.info(function(err, info) {
console.log(info) // prints something like {width:500, height:400, format:'png'}
})
fs.createReadStream('input.jpg').pipe(info)
For more examples and usage see the test folder
contain sets the scaled image to maximum have a width/height of the scale box. Always respects ratio.cover sets the scaled image to at least have one of the width/height within the scale box. Always respects ratio.fixed sets the scaled image to precisely the given width/height of the scale box. If both width/height is given it does not respect the ratio.If you install ghostscript as well you will be able to convert pdfs to images by simply piping in a pdf and setting output format to jpeg (or another image format).
If you are rendering a multipage pdf scale.height will set the height of each page. To force scale.height to donate the height of the entire image set scale.multipage = true.
Use split = true to output each page as an image file. This will result in a tar file containing all the images, so you will need to untar them on the other end. Use a project like tar-stream to achieve this.
You need to install libgraphicsmagicks in order to compile this.
brew install graphicsmagick --build-from-source
brew install libarchive
You will have to build the binary using the following command
gcc src/*.c -o bin/convert -L/usr/local/opt/libarchive/lib -I/usr/local/opt/libarchive/include -larchive -O `GraphicsMagickWand-config --cflags --cppflags --ldflags --libs`
sudo apt-get install build-essential libgraphicsmagick++1-dev libarchive-dev
Then npm install should work.
MIT
FAQs
Fast convertion/scaling of images using a pool of long lived graphicsmagick processes
The npm package graphicsmagick-stream receives a total of 101 weekly downloads. As such, graphicsmagick-stream popularity was classified as not popular.
We found that graphicsmagick-stream demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket Firewall Enterprise is now available with flexible deployment, configurable policies, and expanded language support.

Security News
Open source dashboard CNAPulse tracks CVE Numbering Authorities’ publishing activity, highlighting trends and transparency across the CVE ecosystem.

Product
Detect malware, unsafe data flows, and license issues in GitHub Actions with Socket’s new workflow scanning support.