mirror of
https://github.com/lovell/sharp.git
synced 2025-12-19 07:15:08 +01:00
Add support for WebP and TIFF image formats. Closes #7.
This commit is contained in:
37
README.md
37
README.md
@@ -7,10 +7,12 @@ _adj_
|
||||
3. shrewd or astute: a sharp bargainer.
|
||||
4. (Informal.) very stylish: a sharp dresser; a sharp jacket.
|
||||
|
||||
The typical use case for this high speed Node.js module is to convert large JPEG and PNG images to smaller JPEG and PNG images of varying dimensions.
|
||||
The typical use case for this high speed Node.js module is to convert large JPEG, PNG, WebP and TIFF images to smaller images of varying dimensions.
|
||||
|
||||
The performance of JPEG resizing is typically 15x-25x faster than ImageMagick and GraphicsMagick, based mainly on the number of CPU cores available.
|
||||
|
||||
This module supports reading and writing images to and from both the filesystem and Buffer objects (TIFF is limited to filesystem only). Everything remains non-blocking thanks to _libuv_.
|
||||
|
||||
Under the hood you'll find the blazingly fast [libvips](https://github.com/jcupitt/libvips) image processing library, originally created in 1989 at Birkbeck College and currently maintained by John Cupitt.
|
||||
|
||||
## Prerequisites
|
||||
@@ -32,9 +34,9 @@ For the sharpest results, please compile libvips from source.
|
||||
|
||||
Scale and crop to `width` x `height` calling `callback` when complete.
|
||||
|
||||
`input` can either be a filename String or a Buffer. When using a filename libvips will `mmap` the file for improved performance.
|
||||
`input` can either be a filename String or a Buffer.
|
||||
|
||||
`output` can either be a filename String or one of `sharp.buffer.jpeg` or `sharp.buffer.png` to pass a Buffer containing image data to `callback`.
|
||||
`output` can either be a filename String or one of `sharp.buffer.jpeg`, `sharp.buffer.png` or `sharp.buffer.webp` to pass a Buffer containing JPEG, PNG or WebP image data to `callback`.
|
||||
|
||||
`width` is the Number of pixels wide the resultant image should be.
|
||||
|
||||
@@ -71,7 +73,7 @@ sharp.resize("input.jpg", sharp.buffer.jpeg, 300, 200, {progressive: true}, func
|
||||
```
|
||||
|
||||
```javascript
|
||||
sharp.resize("input.jpg", sharp.buffer.png, 300, 200, {sharpen: true}, function(err, buffer) {
|
||||
sharp.resize("input.webp", sharp.buffer.png, 300, 200, {sharpen: true}, function(err, buffer) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
@@ -80,21 +82,21 @@ sharp.resize("input.jpg", sharp.buffer.png, 300, 200, {sharpen: true}, function(
|
||||
```
|
||||
|
||||
```javascript
|
||||
sharp.resize(buffer, "output.jpg", 200, 300, {canvas: sharp.canvas.embedWhite}, function(err) {
|
||||
sharp.resize(buffer, "output.tiff", 200, 300, {canvas: sharp.canvas.embedWhite}, function(err) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
// output.jpg is a 200 pixels wide and 300 pixels high image containing a scaled version
|
||||
// output.tiff is a 200 pixels wide and 300 pixels high image containing a scaled version
|
||||
// of the image data contained in buffer embedded on a white canvas
|
||||
});
|
||||
```
|
||||
|
||||
```javascript
|
||||
sharp.resize("input.jpg", sharp.buffer.jpeg, 200, 300, {canvas: sharp.canvas.embedBlack}, function(err, buffer) {
|
||||
sharp.resize("input.jpg", sharp.buffer.webp, 200, 300, {canvas: sharp.canvas.embedBlack}, function(err, buffer) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
// buffer contains JPEG image data of a 200 pixels wide and 300 pixels high image
|
||||
// buffer contains WebP image data of a 200 pixels wide and 300 pixels high image
|
||||
// containing a scaled version of input.png embedded on a black canvas
|
||||
});
|
||||
```
|
||||
@@ -108,10 +110,12 @@ sharp.resize("input.jpg", sharp.buffer.jpeg, 200, 300, {canvas: sharp.canvas.emb
|
||||
Test environment:
|
||||
|
||||
* AMD Athlon 4 core 3.3GHz 512KB L2 CPU 1333 DDR3
|
||||
* libvips 7.37
|
||||
* libvips 7.38
|
||||
* libjpeg-turbo8 1.3.0
|
||||
* libpng 1.6.6
|
||||
* zlib1g 1.2.7
|
||||
* libwebp 0.3.0
|
||||
* libtiff 4.0.2
|
||||
|
||||
`-file-buffer` indicates read from file and write to buffer, `-buffer-file` indicates read from buffer and write to file etc.
|
||||
|
||||
@@ -149,6 +153,21 @@ Test environment:
|
||||
* sharp-file-buffer-progressive x 46.35 ops/sec ±0.20% (76 runs sampled)
|
||||
* sharp-file-buffer-sequentialRead x 29.02 ops/sec ±0.62% (72 runs sampled)
|
||||
|
||||
### WebP
|
||||
|
||||
* sharp-buffer-file x 3.30 ops/sec ±117.14% (19 runs sampled)
|
||||
* sharp-buffer-buffer x 7.66 ops/sec ±5.83% (43 runs sampled)
|
||||
* sharp-file-file x 9.88 ops/sec ±0.98% (52 runs sampled)
|
||||
* sharp-file-buffer x 9.95 ops/sec ±0.25% (52 runs sampled)
|
||||
* sharp-file-buffer-sharpen x 9.05 ops/sec ±0.36% (48 runs sampled)
|
||||
* sharp-file-buffer-sequentialRead x 9.87 ops/sec ±0.98% (52 runs sampled)
|
||||
|
||||
### TIFF
|
||||
|
||||
* sharp-file-file x 68.24 ops/sec ±5.93% (85 runs sampled)
|
||||
* sharp-file-file-sharpen x 50.76 ops/sec ±0.52% (82 runs sampled)
|
||||
* sharp-file-file-sequentialRead x 36.37 ops/sec ±0.90% (87 runs sampled)
|
||||
|
||||
## Licence
|
||||
|
||||
Copyright 2013, 2014 Lovell Fuller
|
||||
|
||||
Reference in New Issue
Block a user