@zwyssigly/image-capture
v0.2.2
Published
tba
Maintainers
Readme
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 |
