@smartface/image-processor
Advanced tools
Comparing version
{ | ||
"name": "@smartface/image-processor", | ||
"version": "1.0.2", | ||
"version": "1.1.0", | ||
"description": "iOS, Android image processor with different scales", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -13,3 +13,3 @@ const Jimp = require('jimp'); | ||
return new Promise((resolve, reject) => { | ||
Jimp.read(imagePath, (err, image) => { | ||
readImageFromCache(imagePath, (err, image) => { | ||
if (err) | ||
@@ -31,3 +31,79 @@ return reject(err); | ||
} | ||
module.exports.scaleOneImage = scaleOneImage; | ||
module.exports.scaleOneImage = scaleOneImage; | ||
/** | ||
* @function resizeOneImage | ||
* scale one image with given scaleFactor | ||
* @param {string} imagePath absolute path of given source image | ||
* @param {number} width width of generated image | ||
* @param {number} heigth heigth of generated image | ||
* @param {string} name name of new image. | ||
* @return {Promise} promise of result image. | ||
*/ | ||
function resizeOneImage(imagePath, width, height, name) { | ||
return new Promise((resolve, reject) => { | ||
readImageFromCache(imagePath, (err, image) => { | ||
if (err) | ||
return reject(err); | ||
image.resize(width || Jimp.AUTO, height || Jimp.AUTO, Jimp.RESIZE_BEZIER); | ||
resolve({ | ||
image, | ||
name | ||
}); | ||
}); | ||
}); | ||
} | ||
module.exports.resizeOneImage = resizeOneImage; | ||
/** | ||
* @function cropAndResize | ||
* scale one image with given scaleFactor | ||
* @param {string} imagePath absolute path of given source image | ||
* @param {number} width width of generated image | ||
* @param {number} heigth heigth of generated image | ||
* @param {string} name name of new image. | ||
* @return {Promise} promise of result image. | ||
*/ | ||
function cropAndResize(imagePath, width, height, name) { | ||
return new Promise((resolve, reject) => { | ||
readImageFromCache(imagePath, (err, image) => { | ||
if (err) | ||
return reject(err); | ||
var isLandScape = width >= height; | ||
var w = image.bitmap.width; // the width of the image | ||
var h = image.bitmap.height; // the height of the image | ||
console.log(`width ${w} height ${h}`); | ||
var scaleFactor = (isLandScape ? w : h) / (isLandScape ? width : height); | ||
image | ||
.crop( | ||
isLandScape ? 0 : (w / 2) - (scaleFactor * width * 0.5), | ||
isLandScape ? (h / 2) - (scaleFactor * height * 0.5) : 0, | ||
scaleFactor * width, | ||
scaleFactor * height | ||
).scale(1 / scaleFactor); | ||
resolve({ | ||
image, | ||
name | ||
}); | ||
}); | ||
}); | ||
} | ||
module.exports.cropAndResize = cropAndResize; | ||
var cache = {}; | ||
function readImageFromCache(imagePath, cb) { | ||
if (cache[imagePath]) | ||
return cb(null, cache[imagePath].clone()); | ||
Jimp.read(imagePath, (err, image) => { | ||
if (err) | ||
return cb(err); | ||
cache[imagePath] = image; | ||
cb(null, image.clone()); | ||
}); | ||
} | ||
const path = require("path"); | ||
const generateImageSet = require("./imageset").generateImageSet; | ||
const generateDrawables = require("./drawable").generateDrawables; | ||
const deleteImageSet = require("./imageset").deleteImageSet; | ||
const deleteDrawables = require("./drawable").deleteDrawables; | ||
const iosImagesHandler = require("./ios"); | ||
const androidImagesHandler = require("./android"); | ||
@@ -22,2 +20,4 @@ const DEFAULT_SCALE_FACTOR = 3; | ||
const deleteFlag = argv.delete; | ||
const isIconImage = argv.isIconImage; | ||
const isLaunchImage = argv.isLaunchImage; | ||
@@ -36,2 +36,6 @@ if (!(srcImage && destAndroidFolder && destiOSFolder) || | ||
--delete : flag -> delete images from 'destiOSFolder' and 'destAndroidFolder' (optional) | ||
--isIconImage : flag -> generate given image as AppIcon (icons) | ||
--isLaunchImage : flag -> generate given image as LaunchImage (splash images) | ||
Example input: smartface.png, smartface.ios.png, smarface.android.4x.png | ||
`); | ||
@@ -53,9 +57,23 @@ process.exit(1); | ||
if (!os || (os === OS.iOS)) { // generate imageset. | ||
deleteFlag ? taskPromises.push(deleteImageSet(imageName, destiOSFolder)) : | ||
taskPromises.push(generateImageSet(srcImage, scale, imageName, destiOSFolder)); | ||
taskPromises.push(iosImagesHandler({ | ||
deleteFlag, | ||
isIconImage, | ||
isLaunchImage, | ||
srcImage, | ||
imageName, | ||
destFolder: destiOSFolder, | ||
scale | ||
})); | ||
} | ||
if (!os || (os === OS.Android)) { // generate drawables. | ||
deleteFlag ? taskPromises.push(deleteDrawables(imageName, destAndroidFolder)) : | ||
taskPromises.push(generateDrawables(srcImage, scale, imageName, destAndroidFolder)); | ||
taskPromises.push(androidImagesHandler({ | ||
deleteFlag, | ||
isIconImage, | ||
isLaunchImage, | ||
srcImage, | ||
imageName, | ||
destFolder: destAndroidFolder, | ||
scale | ||
})); | ||
} | ||
@@ -62,0 +80,0 @@ |
@@ -41,3 +41,5 @@ const fs = require('fs-extra'); | ||
function writeImageHelper(item) { | ||
return item.image.writeAsync(item.name); | ||
return new Promise((resolve, reject) => { | ||
item.image.writeAsync(item.name).then(res => resolve(item.name), reject); | ||
}); | ||
} | ||
@@ -44,0 +46,0 @@ |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
28717
130.81%15
87.5%921
254.23%7
75%