Skip to content

Instantly share code, notes, and snippets.

@MaximStone
Last active September 7, 2019 09:56
Show Gist options
  • Save MaximStone/1e9c599edc5f1aa359233cc004825528 to your computer and use it in GitHub Desktop.
Save MaximStone/1e9c599edc5f1aa359233cc004825528 to your computer and use it in GitHub Desktop.
Resize images from current folder with transliterate to output folder
// script that resize
// npm install -g sharp
// npm install -g cyrillic-to-translit-js
const targetWidth = 900; // null - if need to fit size by height
const targetHeight = null; // null - if need to fit size by width
const targetFolder = 'output';
const withTransparentTrim = true;
const targetDir = `./${targetFolder}-${targetWidth}x${targetHeight}`;
const formats = ['jpg','png','jpeg'];
const sharp = requireGlobal('sharp');
const translit = requireGlobal('cyrillic-to-translit-js');
const fs = require('fs');
if (!fs.existsSync(targetDir)){
fs.mkdirSync(targetDir);
}
const files = fs.readdirSync('./', {withFileTypes: true})
.filter(item => !item.isDirectory())
.map(item => item.name);
files.forEach(file => {
if (formats.some(format => file.includes(format))){
console.log('process ' + file);
let buffer = sharp(file)
.resize(targetWidth, targetHeight);
if (withTransparentTrim) {
buffer = buffer.trim();
}
buffer.toFile(`${targetDir}/${translit().transform(file, "_")}`, (err, info) => {
if (err) {
console.log(err);
} else {
console.log(info);
}
});
}
});
function requireGlobal(packageName) {
var childProcess = require('child_process');
var path = require('path');
const fs = require('fs');
var globalNodeModules = childProcess.execSync('npm root -g').toString().trim();
var packageDir = path.join(globalNodeModules, packageName);
if (!fs.existsSync(packageDir))
packageDir = path.join(globalNodeModules, 'npm/node_modules', packageName); //find package required by old npm
console.log(packageDir);
if (!fs.existsSync(packageDir))
throw new Error('Cannot find global module \'' + packageName + '\'');
var packageMeta = JSON.parse(fs.readFileSync(path.join(packageDir, 'package.json')).toString());
var main = path.join(packageDir, packageMeta.main);
return require(main);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment