@zwyssigly/image-capture

0.2.2 • Public • Published

WARNING

This Package is under early development and will have breaking changes and bugs !!!

Description

image-capture is a client library to process captured images before upload.

Features

  • get an image from either the file system or directly from camera
  • down scale to image to maximum width and heigth
  • crop the image to an aspect ratio with two differnt modes: contain, cover
  • rotate and flip the image before upload
  • fix orientation from exif tag before upload

Example

import { capturePicture } from '../index';

window.result = null;
window.onload = () => {
  document.getElementById("btn").onclick = () => {
    capturePicture({
      output: 'dataUrl',
      cropColor: '#FF0000',
      maxWidth: 512,
      maxHeight: 512,
      cropRatio: [1, 1],
      cropBehavior: 'contain',
      capture: 'environment',
      debug: true
    }).then(apply);
  };
  document.getElementById("cw").onclick = () => {
    window.result.rotateClockwise().then(apply);
  }
  document.getElementById("ccw").onclick = () => {
    window.result.rotateCounterClockwise().then(apply);
  }
  document.getElementById("fh").onclick = () => {
    window.result.flipHorizontally().then(apply);
  }
  document.getElementById("fv").onclick = () => {
    window.result.flipVertically().then(apply);
  }
}

function apply(result) {
  console.log(result);
  window.result = result;
  document.getElementById('img').src = result.data;
}

Methods

Signature Description
capturePicture(options: Options): Promise<PictureResult> open the file dialog or camera and process the return file with the given options
processPicture(file: Blob, options: Options): Promise<PictureResult> in case you already got a file instance

Options

Option Type Default Description
capture false⎮'environment'⎮'user' false when set, it will open the camera instead of a file dialog on smart phones
maxWidth false⎮int false images is scaled down to fit within the given width
maxHeight false⎮int false images is scaled down to fit within the given height
maxHeight false⎮int false images is scaled down to fit within the given height
orientation 'meta'⎮1-8 'meta' either get orientation from exif or uses the given orientation. (1 means no rotation or flipping)
cropRatio false⎮[int, int] false when set, it will enforce given ratio and crop the picture to fit
cropFit 'cover'⎮'contain' 'cover' defines how the images is fit into the new aspect ratio
cropColor string '#000000' defines the background color in case cropFit is set to 'contain'
mimeType 'keep'⎮string 'image/jpeg' 'keep' keeps the original format
quality 0-1 0.75 image quality
output 'blob'⎮'dataUrl' 'blob' how the processed image is returned
debug bool⎮Function false when true logs debug information to console otherwise it will use the given Function

PictureResult

Signature Description
original: Blob original file
data: Blob⎮string processed image either as blob or as data url
options: Options options used to process the image
rotateClockwise(): Promise<PictureResult> processes the image again with different orientation
rotateCounterClockwise(): Promise<PictureResult> processes the image again with different orientation
flipHorizontally(): Promise<PictureResult> processes the image again with different orientation
flipVertically(): Promise<PictureResult> processes the image again with different orientation

Package Sidebar

Install

npm i @zwyssigly/image-capture

Weekly Downloads

1

Version

0.2.2

License

MIT

Unpacked Size

14.7 kB

Total Files

4

Last publish

Collaborators

  • zwyssigly