simple2k13
Version:
some simple functions
65 lines • 2.28 kB
JavaScript
import { dataType } from '../..';
const canvasDrawImage = (canvas, url, options = {}) => {
const { interceptors, crossOrigin = 'Anonymous', zoom = 1, debug = false } = options;
return new Promise((resolve, reject) => {
try {
const ctx = canvas?.getContext('2d');
const cW = canvas.width;
const cH = canvas.height;
let scale = 1;
const img = new Image();
img.crossOrigin = crossOrigin;
img.src = url;
img.onload = () => {
let iW = img.width;
let iH = img.height;
if ((cW / cH) > (iW / iH)) {
scale = cH / iH;
}
else {
scale = cW / iW;
}
iW = iW * scale * zoom;
iH = iH * scale * zoom;
debug && console.log({
cW,
cH,
scale,
zoom,
originIW: img.width,
originIH: img.height,
iW,
iH
});
const [dx, dy, dw, dh] = [(cW - iW) / 2, (cH - iH) / 2, iW, iH];
if (typeof interceptors === 'function') {
const result = interceptors();
if (dataType(result) !== 'Promise')
throw reject(new Error('interceptors must be Promise'));
result.then((pass) => {
if (pass) {
ctx?.drawImage(img, dx, dy, dw, dh);
resolve('success');
}
else {
reject('cancel');
}
}, () => {
reject('cancel');
});
return;
}
ctx?.drawImage(img, dx, dy, dw, dh);
resolve('success');
};
img.onerror = (error) => {
reject(error);
};
}
catch (error) {
reject(error);
}
});
};
export default canvasDrawImage;
//# sourceMappingURL=index.js.map