
Research
Security News
Lazarus Strikes npm Again with New Wave of Malicious Packages
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
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 3 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.
Research
Security News
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
Security News
Socket CEO Feross Aboukhadijeh discusses the open web, open source security, and how Socket tackles software supply chain attacks on The Pair Program podcast.
Security News
Opengrep continues building momentum with the alpha release of its Playground tool, demonstrating the project's rapid evolution just two months after its initial launch.