mirror of
https://github.com/appium/appium.git
synced 2026-10-28 20:31:51 +08:00
33 lines
985 B
JavaScript
33 lines
985 B
JavaScript
let _sharp;
|
|
|
|
/**
|
|
* @returns {import('sharp')}
|
|
*/
|
|
export function requireSharp() {
|
|
if (!_sharp) {
|
|
try {
|
|
_sharp = require('sharp');
|
|
} catch (err) {
|
|
throw new Error(
|
|
`Cannot load the 'sharp' module needed for images processing. ` +
|
|
`Consider visiting https://sharp.pixelplumbing.com/install ` +
|
|
`for troubleshooting. Original error: ${err.message}`
|
|
);
|
|
}
|
|
}
|
|
return _sharp;
|
|
}
|
|
|
|
/**
|
|
* Crop the image by given rectangle (use base64 string as input and output)
|
|
*
|
|
* @param {string} base64Image The string with base64 encoded image.
|
|
* Supports all image formats natively supported by Sharp library.
|
|
* @param {import('sharp').Region} rect The selected region of image
|
|
* @return {Promise<string>} base64 encoded string of cropped image
|
|
*/
|
|
export async function cropBase64Image(base64Image, rect) {
|
|
const buf = await requireSharp()(Buffer.from(base64Image, 'base64')).extract(rect).toBuffer();
|
|
return buf.toString('base64');
|
|
}
|