A simple and tiny library for shrinking images using TinyPNG’s API
npm install --save tinypng
import { TinyPNG } from 'tinypng';
import { readFileSync } from 'fs';
// Head over to https://tinypng.com/developers to get an API key
const client = new TinyPNG('<YOUR API KEY>');
(async () => {
// Compress file
const file = await client.compress(readFileSync('./some-file.png'));
console.log(file);
// Compress URL
const url = await client.compress('http://example.com/example.jpg');
console.log(url);
})();
The resizing methods scale
, fit
, cover
, and thumb
are currently supported. See https://tinypng.com/developers/reference#request-options for more details.
(async () => {
// Compress file
const file = await client.compress(readFileSync('./some-file.png'), {
width: 123,
height: 456,
method: 'fit',
});
console.log(file);
// Compress URL
const url = await client.compress('http://example.com/example.jpg', {
width: 123,
height: 456,
method: 'fit',
});
console.log(url);
})();
Preserving copyright
information, the GPS location
, and the creation
date are currently supported.
(async () => {
// Compress file
const file = await client.compress(readFileSync('./some-file.png'), {
preserve: ['copyright'],
});
console.log(file);
// Compress URL
const url = await client.compress('http://example.com/example.jpg', {
preserve: ['copyright'],
});
console.log(url);
})();
If you are uploading a large number of images, images with a large filessize, or just have a slow connection speed, you can adjust the timeout on web requests to the TinyPNG API by passing a second, optional parameter to the constructor specifiying your preferred timeout in seconds.
const client = new TinyPNG('<YOUR API KEY>', 60);
-
1.0.1
- Added optional timeout
-
1.0.0
- Initial version
Copyright (c) 2022 Thomas Rasshofer
Licensed under the MIT license.
See LICENSE for more info.