Socket
Socket
Sign inDemoInstall

papercut

Package Overview
Dependencies
4
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    papercut

Papercut is a node package to handle image upload, resize and sync with Amazon s3


Version published
Weekly downloads
0
decreased by-100%
Maintainers
1
Created
Weekly downloads
 

Readme

Source

PAPERCUT!

Papercut handle image processing, versioning and storage for you, in node.js.

Features

  • environment configuration
  • node-imagemagick integration for image resize, crop and copy.
  • S3 image upload

Install

In terminal:

npm install papercut --save

Usage

var papercut = require('papercut');

papercut.configure(function(){
  papercut.set('storage', 'file')
  papercut.set('directory', './images/uploads')
  papercut.set('url', '/images/uploads')
});

papercut.configure('production', function(){
  papercut.set('storage', 's3')
  papercut.set('S3_KEY', process.env.S3_KEY)
  papercut.set('S3_SECRET', process.env.S3_SECRET)
  papercut.set('bucket', 'papercut')
});


AvatarUploader = papercut.Schema(function(schema){
  schema.version({
    name: 'avatar',
    size: '200x200',
    process: 'crop'
  });

  schema.version({
    name: 'small',
    size: '50x50',
    process: 'crop'
  });
});

uploader = new AvatarUploader();

uploader.process('image1', file.path, function(images){
  console.log(images.avatar); // '/images/uploads/image1-avatar.jpg'
  console.log(images.small); // '/images/uploads/image1-small.jpg'
})

Configuration

In papercut, you can set the image directory and default process by getter and setter:

var papercut = require('papercut');

//storage type, have file and s3
papercut.set('storage', 'file');
//directory for saving image
papercut.set('directory', './images/uploads');
//url path to the directory
papercut.set('url', '/images/uploads');
//set output images extension
papercut.set('extension', 'jpg');

Also, you can set the environment dependent configuration, it detect the process.env.NODE_ENV param.
you can call export NODE_ENV=[environment] to change environment.

papercut.configure('production', function(){
  //set storage to s3 for production environment
  papercut.set('storage', 's3');
  //set s3 key from environment.
  papercut.set('S3_KEY', process.env.S3_KEY);
  papercut.set('S3_SECRET', process.env.S3_SECRET);
  //s3 bucket name
  papercut.set('bucket', 'papercut');
});

Schema and Version

After configuration, you can create an uploader to process images with multiple version by Schema

var Uploader = papercut.Schema(function(schema){
  schema.version({
    name: 'thumbnail',
    size: '45x45',
    process: 'crop'
  });

  schema.version({
    name: 'large',
    size: '600x480',
    process: 'resize'
  });

  schema.version({
    name: 'origin',
    process: 'copy'
  });
});

You can also set custom param according to version

var Uploader = papercut.Schema(function(schema){
  schema.version({
    name: 'auto',
    size: '120x120',
    process: 'crop'
    custom: ['-auto-orient']
  });
});

Process

With uploader, you can pass the image identifier and image path to process images.
Also with images url in different versions:

var uploader = new Uploader();

uploader.process('412341', '/tmp/13912304.jpg', function(err, images){
  console.log(images);
  // {
  //  thumbnail: '/images/upload/412341-thumbnail.jpg',
  //  large: '/images/upload/412341-large.jpg',
  //  origin: '/images/upload/412341-origin.jpg'
  // }
});

##Express

Check out the express example in project for how to use it in express framework.

Todos

  • Process image from previous one to improve processing speed.
  • Custom gravity
  • Api improvement
Licence : MIT
Author : Jimmy Chao (daizenga@gmail.com)

Keywords

FAQs

Last updated on 24 Mar 2013

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc