| import JPEG from "jpeg-js"; | |
| import { throwError, isNodePattern } from "@jimp/utils"; | |
| const MIME_TYPE = "image/jpeg"; | |
| export default () => ({ | |
| mime: { [MIME_TYPE]: ["jpeg", "jpg", "jpe"] }, | |
| constants: { | |
| MIME_JPEG: MIME_TYPE, | |
| }, | |
| decoders: { | |
| [MIME_TYPE]: JPEG.decode, | |
| }, | |
| encoders: { | |
| [MIME_TYPE]: (image) => JPEG.encode(image.bitmap, image._quality).data, | |
| }, | |
| class: { | |
| // The quality to be used when saving JPEG images | |
| _quality: 100, | |
| /** | |
| * Sets the quality of the image when saving as JPEG format (default is 100) | |
| * @param {number} n The quality to use 0-100 | |
| * @param {function(Error, Jimp)} cb (optional) a callback for when complete | |
| * @returns {Jimp} this for chaining of methods | |
| */ | |
| quality(n, cb) { | |
| if (typeof n !== "number") { | |
| return throwError.call(this, "n must be a number", cb); | |
| } | |
| if (n < 0 || n > 100) { | |
| return throwError.call(this, "n must be a number 0 - 100", cb); | |
| } | |
| this._quality = Math.round(n); | |
| if (isNodePattern(cb)) { | |
| cb.call(this, null, this); | |
| } | |
| return this; | |
| }, | |
| }, | |
| }); | |