image-thumbnail
Version:
Generate an image thumbnail.
157 lines (123 loc) • 4.05 kB
Markdown
# About
Generate an image thumbnail.
[](https://nodei.co/npm/image-thumbnail/)
## Purpose?
This module will generate an image thumbnail.
By default the thumbnail's file format will be the same as the source file. You can use the __jpegOptions__ option to force output to jpeg.
## Usage
### imageThumbnail(source, options)
#### Async/Await (Typescript & ES7)
```js
const imageThumbnail = require('image-thumbnail');
try {
const thumbnail = await imageThumbnail('resources/images/dog.jpg');
console.log(thumbnail);
} catch (err) {
console.error(err);
}
```
#### Using promises (node 8.x)
```js
const imageThumbnail = require('image-thumbnail');
imageThumbnail('resources/images/dog.jpg')
.then(thumbnail => { console.log(thumbnail) })
.catch(err => console.error(err));
```
## Examples
#### From Uri
```js
const imageThumbnail = require('image-thumbnail');
try {
const thumbnail = await imageThumbnail({ uri: 'https://images/dogs.jpg' });
console.log(thumbnail);
} catch (err) {
console.error(err);
}
```
#### From Base64
```js
const imageThumbnail = require('image-thumbnail');
try {
const thumbnail = await imageThumbnail('/9j/4AAQSkZJRgABAQEBLAEsAAD/4QEERXhpZgAA==');
console.log(thumbnail);
} catch (err) {
console.error(err);
}
```
#### From Path
```js
const imageThumbnail = require('image-thumbnail');
try {
const thumbnail = await imageThumbnail('resources/images/dog.jpg');
console.log(thumbnail);
} catch (err) {
console.error(err);
}
```
#### From Buffer
```js
const imageThumbnail = require('image-thumbnail');
try {
const imageBuffer = fs.readFileSync('resources/images/dog.jpg');
const thumbnail = await imageThumbnail(imageBuffer);
console.log(thumbnail);
} catch (err) {
console.error(err);
}
```
#### From Stream
```js
const imageThumbnail = require('image-thumbnail');
const fs = require('fs');
try {
const stream = fs.createReadStream('resources/images/dog.jpg')
const thumbnail = await imageThumbnail(stream);
console.log(thumbnail);
} catch (err) {
console.error(err);
}
```
## Options
- __options:__
- __percentage__ [0-100] - image thumbnail percentage. Default = 10
- __width__ [number] - image thumbnail width.
- __height__ [number] - image thumbnail height.
- __responseType__ ['buffer' || 'base64'] - response output type. Default = 'buffer'
- __jpegOptions__ [0-100] - Example: { force:true, quality:100 }
- __fit__ [string] - method by which the image should fit the width/height. Default = contain ([details](https://sharp.pixelplumbing.com/api-resize))
- __failOnError__ [boolean] - Set to false to avoid read problems for images from some phones (i.e Samsung) in the sharp lib. Default = true ([details](https://github.com/lovell/sharp/issues/1578))
- __withMetaData__ [boolean] - Keep metadata in the thumbnail (will increase file size)
- __flattenBackgroundColor__ [background colour] - parsed by the color module, defaults to #ffffff.
### Examples
```js
const imageThumbnail = require('image-thumbnail');
let options = { percentage: 25, responseType: 'base64' }
try {
const thumbnail = await imageThumbnail('resources/images/dog.jpg', options);
console.log(thumbnail);
} catch (err) {
console.error(err);
}
```
```js
const imageThumbnail = require('image-thumbnail');
let options = { width: 100, height: 100, responseType: 'base64' }
try {
const thumbnail = await imageThumbnail('resources/images/dog.jpg', options);
console.log(thumbnail);
} catch (err) {
console.error(err);
}
```
```js
const imageThumbnail = require('image-thumbnail');
let options = { width: 100, height: 100, responseType: 'base64', jpegOptions: { force:true, quality:90 } }
try {
const thumbnail = await imageThumbnail('resources/images/dog.jpg', options);
console.log(thumbnail);
} catch (err) {
console.error(err);
}
```
# License
This project is licensed under the MIT License - see the LICENSE.md file for details.