Tôi có mã tải một loạt các hình ảnh vào các phần tử img ẩn và sau đó là một vòng lặp Javascript đặt mỗi hình ảnh lên khung hình. Tuy nhiên, tôi muốn cắt từng hình ảnh sao cho nó là hình tròn khi được đặt trên canvas.Bạn có thể có nhiều vùng cắt trong Canvas HTML không?
vòng lặp của tôi trông như thế này:
$$('#avatars img').each(function(avatar) {
var canvas = $('canvas');
var context = canvas.getContext('2d');
var x = Math.floor(Math.random() * canvas.width);
var y = Math.floor(Math.random() * canvas.height);
context.beginPath();
context.arc(x+24, y+24, 20, 0, Math.PI * 2, 1);
context.clip();
context.strokeStyle = "black";
context.drawImage(document.getElementById(avatar.id), x, y);
context.stroke();
});
Vấn đề là, chỉ những hình ảnh đầu tiên được rút ra (hoặc có thể nhìn thấy).
Nếu tôi loại bỏ logic clipping:
$$('#avatars img').each(function(avatar) {
var canvas = $('canvas');
var context = canvas.getContext('2d');
var x = Math.floor(Math.random() * canvas.width);
var y = Math.floor(Math.random() * canvas.height);
context.drawImage(document.getElementById(avatar.id), x, y);
});
Sau đó, tất cả hình ảnh của tôi được rút ra.
Có cách nào để có được từng hình ảnh riêng lẻ không?
Tôi đã thử đặt lại khu vực cắt thành toàn bộ canvas giữa các hình ảnh nhưng không hoạt động.
lưu/khôi phục - đó là nó! cảm ơn bạn rất nhiều. không chắc chắn về đề xuất của bạn để vẽ các hình ảnh khác nhau. mã drawimage te hoạt động tốt theo cách tôi có nó bây giờ, những gì sẽ là lợi ích của việc sử dụng mã bạn cung cấp? – emh
Thật đơn giản, bạn không cần phải thêm tất cả các tệp hình ảnh vào trang. Hiển thị nguồn vào lớp Image() sẽ là đủ. Nếu bạn loại bỏ những trang đó, trang của bạn sẽ không tải những hình ảnh đó khi tải trang. chúng ta đang nói về :) – Myra
Hình ảnh không cắt đúng cho tôi .. – CarbonDry