123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- /**
- * Extend proto.
- */
- module.exports = function (proto) {
- var exifTransforms = {
- topleft: ''
- , topright: ['-flop']
- , bottomright: ['-rotate', 180]
- , bottomleft: ['-flip']
- , lefttop: ['-flip', '-rotate', 90]
- , righttop: ['-rotate', 90]
- , rightbottom: ['-flop', '-rotate', 90]
- , leftbottom: ['-rotate', 270]
- }
- proto.autoOrient = function autoOrient () {
- // Always strip EXIF data since we can't
- // change/edit it.
- // imagemagick has a native -auto-orient option
- // so does graphicsmagick, but in 1.3.18.
- // apt doesn't release this version yet.
- if (this._options.imageMagick) {
- this.out('-auto-orient');
- this.strip();
- return this;
- }
- this.preprocessor(function (callback) {
- this.orientation({bufferStream: true}, function (err, orientation) {
- if (err) return callback(err);
- var transforms = exifTransforms[orientation.toLowerCase()];
- if (transforms) {
- // remove any existing transforms that might conflict
- var index = this._out.indexOf(transforms[0]);
- if (~index) {
- this._out.splice(index, transforms.length);
- }
- // repage to fix coordinates
- this._out.unshift.apply(this._out, transforms.concat('-page', '+0+0'));
- }
- this.strip();
- callback();
- });
- });
- return this;
- }
- }
|