Browse Source

Change run() functions to be async

j433866 6 years ago
parent
commit
a0b94bba4e

+ 5 - 18
src/core/operations/DitherImage.mjs

@@ -36,27 +36,14 @@ class DitherImage extends Operation {
      * @param {Object[]} args
      * @returns {byteArray}
      */
-    run(input, args) {
+    async run(input, args) {
         const type = Magic.magicFileType(input);
 
         if (type && type.mime.indexOf("image") === 0){
-            return new Promise((resolve, reject) => {
-                jimp.read(Buffer.from(input))
-                    .then(image => {
-                        image
-                            .dither565()
-                            .getBuffer(jimp.AUTO, (error, result) => {
-                                if (error){
-                                    reject(new OperationError("Error getting the new image buffer"));
-                                } else {
-                                    resolve([...result]);
-                                }
-                            });
-                    })
-                    .catch(err => {
-                        reject(new OperationError("Error applying a dither effect to the image."));
-                    });
-            });
+            const image = await jimp.read(Buffer.from(input));
+            image.dither565();
+            const imageBuffer = await image.getBufferAsync(jimp.AUTO);
+            return [...imageBuffer];
         } else {
             throw new OperationError("Invalid file type.");
         }

+ 14 - 31
src/core/operations/ResizeImage.mjs

@@ -57,7 +57,7 @@ class ResizeImage extends Operation {
      * @param {Object[]} args
      * @returns {byteArray}
      */
-    run(input, args) {
+    async run(input, args) {
         let width = args[0],
             height = args[1];
         const unit = args[2],
@@ -67,37 +67,20 @@ class ResizeImage extends Operation {
         if (!type || type.mime.indexOf("image") !== 0){
             throw new OperationError("Invalid file type.");
         }
+        const image = await jimp.read(Buffer.from(input));
 
-        return new Promise((resolve, reject) => {
-            jimp.read(Buffer.from(input))
-                .then(image => {
-                    if (unit === "Percent") {
-                        width = image.getWidth() * (width / 100);
-                        height = image.getHeight() * (height / 100);
-                    }
-                    if (aspect) {
-                        image
-                            .scaleToFit(width, height)
-                            .getBuffer(jimp.AUTO, (error, result) => {
-                                if (error){
-                                    reject(new OperationError("Error scaling the image."));
-                                } else {
-                                    resolve([...result]);
-                                }
-                            });
-                    } else {
-                        image
-                            .resize(width, height)
-                            .getBuffer(jimp.AUTO, (error, result) => {
-                                if (error){
-                                    reject(new OperationError("Error scaling the image."));
-                                } else {
-                                    resolve([...result]);
-                                }
-                            });
-                    }
-                });
-        });
+        if (unit === "Percent") {
+            width = image.getWidth() * (width / 100);
+            height = image.getHeight() * (height / 100);
+        }
+        if (aspect) {
+            image.scaleToFit(width, height);
+        } else {
+            image.resize(width, height);
+        }
+
+        const imageBuffer = await image.getBufferAsync(jimp.AUTO);
+        return [...imageBuffer];
     }
 
     /**

+ 5 - 19
src/core/operations/RotateImage.mjs

@@ -42,28 +42,15 @@ class RotateImage extends Operation {
      * @param {Object[]} args
      * @returns {byteArray}
      */
-    run(input, args) {
+    async run(input, args) {
         const [degrees] = args;
         const type = Magic.magicFileType(input);
 
         if (type && type.mime.indexOf("image") === 0){
-            return new Promise((resolve, reject) => {
-                jimp.read(Buffer.from(input))
-                    .then(image => {
-                        image
-                            .rotate(degrees)
-                            .getBuffer(jimp.AUTO, (error, result) => {
-                                if (error){
-                                    reject(new OperationError("Error getting the new image buffer"));
-                                } else {
-                                    resolve([...result]);
-                                }
-                            });
-                    })
-                    .catch(err => {
-                        reject(new OperationError("Error reading the input image."));
-                    });
-            });
+            const image = await jimp.read(Buffer.from(input));
+            image.rotate(degrees);
+            const imageBuffer = await image.getBufferAsync(jimp.AUTO);
+            return [...imageBuffer];
         } else {
             throw new OperationError("Invalid file type.");
         }
@@ -71,7 +58,6 @@ class RotateImage extends Operation {
 
     /**
      * Displays the rotated image using HTML for web apps
-     * 
      * @param {byteArray} data
      * @returns {html}
      */