Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    graphicsmagick-streampublic

    graphicsmagick-stream

    Fast convertion/scaling of images using a pool of long lived graphicsmagick processes

    npm install graphicsmagick-stream

    Build Status

    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

    Usage

    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

    Scale types

    • 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.

    PDF Conversion

    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.

    Dependencies

    You need to install libgraphicsmagicks in order to compile this.

    Using OS X and Homebrew

    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`

    Using Ubuntu

    sudo apt-get install build-essential libgraphicsmagick++1-dev libarchive-dev

    Then npm install should work.

    License

    MIT

    install

    npm i graphicsmagick-stream

    Downloadslast 7 days

    14

    version

    2.1.2

    license

    MIT

    repository

    github.com

    last publish

    collaborators

    • avatar
    • avatar
    • avatar
    • avatar
    • avatar