UNPKG

3.73 kBSource Map (JSON)View Raw
1{"version":3,"file":"ImageComposite.js","sourceRoot":"","sources":["../src/ImageComposite.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,gDAAwB;AAExB,qCAAqC;AAErC,MAAM,WAAW,GAAG,OAAO,CAAC;AAC5B,MAAM,UAAU,GAAG,SAAS,CAAC;AAE7B,SAAe,oBAAoB,CAAC,KAAa,EAAE,MAAc,EAAE,KAAa;;QAC9E,OAAO,IAAI,OAAO,CAChB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAClB,IAAI,cAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC5C,IAAI,GAAG,EAAE;gBACP,MAAM,CAAC,GAAG,CAAC,CAAC;gBACZ,OAAO;aACR;YACD,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC,CACL,CAAC;IACJ,CAAC;CAAA;AAED,SAAe,oBAAoB,CAAC,KAAW,EAAE,GAAG,MAAc;;QAChE,KAAK,MAAM,UAAU,IAAI,MAAM,EAAE;YAC/B,MAAM,UAAU,GAAG,MAAM,cAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/C,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SACnC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CAAA;AAED,SAAsB,MAAM,CAC1B,SAAiB,EACjB,QAAgB,EAChB,KAAa,EACb,MAAc,EACd,MAAc,SAAS,EACvB,UAAkB;;QAElB,IAAI;YACF,MAAM,YAAY,GAAG,MAAM,cAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,cAAI,CAAC,qBAAqB,GAAG,cAAI,CAAC,uBAAuB,CAAC;YACzE,IAAI,GAAG,KAAK,WAAW,EAAE;gBACvB,OAAO,MAAM,YAAY;qBACtB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;qBAC5B,OAAO,CAAC,GAAG,CAAC;qBACZ,cAAc,CAAC,QAAQ,CAAC,CAAC;aAC7B;iBAAM,IAAI,GAAG,KAAK,UAAU,EAAE;gBAC7B,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACpF,IAAI,CAAC,UAAU,EAAE;oBACf,OAAO,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;iBAC9C;gBAED,MAAM,YAAY,GAAG,MAAM,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;gBAC3E,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;gBAC7E,OAAO,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;aAC/C;iBAAM;gBACL,MAAM,IAAI,kBAAS,CACjB,4BAA4B,GAAG,8CAA8C,CAC9E,CAAC;aACH;SACF;QAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YACpB,MAAM,IAAI,kBAAS,CAAC,kDAAkD,SAAS,MAAM,OAAO,EAAE,CAAC,CAAC;SACjG;IACH,CAAC;CAAA;AAjCD,wBAiCC","sourcesContent":["import Jimp from 'jimp';\n\nimport { IconError } from './Errors';\n\nconst ASPECT_FILL = 'cover';\nconst ASPECT_FIT = 'contain';\n\nasync function createBaseImageAsync(width: number, height: number, color: string): Promise<Jimp> {\n return new Promise(\n (resolve, reject) =>\n new Jimp(width, height, color, (err, image) => {\n if (err) {\n reject(err);\n return;\n }\n resolve(image);\n })\n );\n}\n\nasync function compositeImagesAsync(image: Jimp, ...images: Jimp[]): Promise<Jimp> {\n for (const imageProps of images) {\n const childImage = await Jimp.read(imageProps);\n image.composite(childImage, 0, 0);\n }\n return image;\n}\n\nexport async function resize(\n inputPath: string,\n mimeType: string,\n width: number,\n height: number,\n fit: string = 'contain',\n background: string\n): Promise<Buffer> {\n try {\n const initialImage = await Jimp.read(inputPath);\n const center = Jimp.VERTICAL_ALIGN_MIDDLE | Jimp.HORIZONTAL_ALIGN_CENTER;\n if (fit === ASPECT_FILL) {\n return await initialImage\n .cover(width, height, center)\n .quality(100)\n .getBufferAsync(mimeType);\n } else if (fit === ASPECT_FIT) {\n const resizedImage = await initialImage.contain(width, height, center).quality(100);\n if (!background) {\n return resizedImage.getBufferAsync(mimeType);\n }\n\n const splashScreen = await createBaseImageAsync(width, height, background);\n const combinedImage = await compositeImagesAsync(splashScreen, resizedImage);\n return combinedImage.getBufferAsync(mimeType);\n } else {\n throw new IconError(\n `Unsupported resize mode: ${fit}. Please choose either 'cover', or 'contain'`\n );\n }\n } catch ({ message }) {\n throw new IconError(`It was not possible to generate splash screen '${inputPath}'. ${message}`);\n }\n}\n"]}
\No newline at end of file