Rotates JPEG images based on EXIF orientation.
This tool applies the right orientation to a JPEG image, based on its EXIF tag. More precisely, it:
- Rotates the pixels
- Rotates the thumbnail, if there is one
- Writes
1
in theOrientation
EXIF tag (this is the default orientation) - Updates the
PixelXDimension
andPixelYDimension
EXIF values - Does not alter the other EXIF tags
It may be useful, if:
- You need to compress your image with a tool that strips EXIF data without rotating the pixels (like the great ImageOptim)
- You need to upload the image, but the destination application does not support EXIF orientation (like WordPress)
- You just want to get rid of the orientation tag, while leaving the other tags intact
More information about EXIF:
Install with npm:
$ npm install jpeg-autorotate --global
# --global isn't required if you plan to use the node module
# Rotates a single image
$ jpeg-autorotate /Users/johan/IMG_1234.jpg
# Rotates a set of images
$ jpeg-autorotate /Users/johan/images/IMG_*.jpg
The tool is available as a Node module. It will load the image, apply the rotation, and return the binary data as a Buffer, allowing you to:
var jo = require('jpeg-autorotate');
var options = {quality: 85};
jo.rotate('/Users/johan/IMG_1234.jpg', options, function(error, buffer, orientation)
{
if (error)
{
console.log('An error occurred when rotating the file: ' + error.message);
return;
}
console.log('Orientation was: ' + orientation);
// ...
// Do whatever you need with the buffer
// ...
});
The error
object returned in the callback contains a readable message
, but also a code
for better error handling. Available codes are the following:
var jo = require('jpeg-autorotate');
jo.errors.read_file; // File could not be opened
jo.errors.read_exif; // EXIF data could not be read
jo.errors.no_orientation; // No orientation tag was found
jo.errors.unknown_orientation; // The orientation tag is unknown
jo.errors.correct_orientation; // The image orientation is already correct
jo.errors.rotate_file; // An error occurred when rotating the image
Sample usage:
var jo = require('jpeg-autorotate');
jo.rotate('/image.jpg', function(error, buffer, orientation)
{
if (error && error.code === jo.errors.correct_orientation)
{
console.log('The orientation of this image is already correct!');
}
});
The following options are available.
Option | Context | Default value | Description |
---|---|---|---|
quality |
CLI, module | 100 | Quality of the JPEG - Uncompressed by default, so the resulting image may be bigger than the original one |
jobs |
CLI | 10 | Max number of concurrent processes, when loading several images |
To use options with the CLI:
$ jpeg-autorotate /image.jpg --jobs=100 --quality=85
This project uses semver.
Version | Date | Notes |
---|---|---|
1.1.0 |
2016-04-23 | Adds test suite, removes lwip dependency |
1.0.3 |
2016-03-29 | Displays help when no path given in CLI |
1.0.2 |
2016-03-21 | Adds missing options in CLI help |
1.0.1 |
2016-03-21 | Fixes NPM publishing fail ^_^ |
1.0.0 |
2016-03-21 | Initial version |
This project is released under the MIT License.