console
const canvasElement = document.getElementById('canvas');
const canvas = new fabric.Canvas('canvas');
const imageUrls = [
'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2F4acc801d-2d98-438c-b4d5-e7098b2807a2%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1688265221&t=c3044b398900a58a17497956674e5fa5',
'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2F4acc801d-2d98-438c-b4d5-e7098b2807a2%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1688265221&t=c3044b398900a58a17497956674e5fa5',
'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2F4acc801d-2d98-438c-b4d5-e7098b2807a2%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1688265221&t=c3044b398900a58a17497956674e5fa5',
];
const images = [];
const padding = 10;
let x = padding;
let y = padding;
imageUrls.forEach((url, index) => {
fabric.Image.fromURL(url, (img) => {
const maxDimension = 200;
const scaleFactor = Math.min(maxDimension / img.width, maxDimension / img.height);
img.scale(scaleFactor);
img.set({
left: x,
top: y,
});
x += img.getScaledWidth() + padding;
if (index % 3 === 2) {
y += img.getScaledHeight() + padding;
x = padding;
}
canvas.add(img);
images.push(img);
});
});
<script src="http://cdnjs.cloudflare.com/ajax/libs/fabric.js/2.4.6/fabric.min.js"></script>
<canvas id="canvas" width="350" height="200"></canvas>