import sharp from 'sharp'; import sizeOf from 'image-size'; import fs from 'fs'; import {log} from '../logger/logger'; export default function createPngFiles(filePath, buffer) { console.log(sharp.format); const pngPath = filePath.replace(/\.svg$/, ''); const errorMsg = { status: 1, }; return new Promise((resolve, reject) => { try { const dimensions = sizeOf(filePath); const width = dimensions.width; const height = dimensions.height; if (!fs.existsSync(`./${pngPath}`)) { fs.mkdirSync(`./${pngPath}`); } const promisesToMake = [ convert(buffer, 3 * width, 3 * height, 'large', pngPath), convert(buffer, 2 * width, 2 * height, 'medium', pngPath), convert(buffer, width, height, 'small', pngPath) ]; const promises = Promise.all(promisesToMake); promises.then(() => { return resolve('Successfully converted'); }).catch((err) => { const logErrMsg = {message: 'Failed while converting to PNGs.'}; log.error('createPngFiles', err, null, null, logErrMsg); errorMsg.message = err.message; return reject(errorMsg); }) } catch (error) { log.error('createPngFiles catch block', error, null, null, "Error in Creating Png Files" + error.message); return reject(error); } }); } function convert(buffer, width, height, name, pngPath) { return new Promise((resolve, reject) => { try { log.info('createPngFiles process started for resizing to (' + width + '*' + height + ')'); sharp(buffer) .resize(width, height) .toFile(`./${pngPath}/${name}.png`, (err, info) => { if (err) { log.error('Printing error.......: ', err); return reject(err); } log.info('Printing info', info); return resolve(pngPath) }) } catch (error) { const errorMessage = "Error in Resizing to (" + width + "*" + height + "). Reason :"; log.error('createPngFiles convert catch block', error, null, null, errorMessage + error.message); return reject(error); } }) }