canvas = {
const context = DOM.context2d(width, height, 1);
const context2 = DOM.context2d(width + pad * 2, height + pad * 2, 1);
context.drawImage(image, 0, 0, width, image.naturalHeight / image.naturalWidth * width);
while (true) {
const x = Math.random() * pad | 0;
const y = Math.random() * pad | 0;
context2.drawImage(context.canvas, x, y, width, height);
const image = await new Promise((resolve, reject) => {
context2.canvas.toBlob(blob => {
const image = new Image;
image.src = URL.createObjectURL(blob);
image.onload = () => resolve(image);
image.onerror = reject;
}, "image/jpeg", quality);
});
context.drawImage(image, x, y, width, height, 0, 0, width, height);
URL.revokeObjectURL(image.src);
yield context.canvas;
}
}