Thực ra, canvas DOES tôn vinh "quyền truy cập-cho phép-xuất xứ" nếu hình ảnh có thuộc tính "crossOrigin" có giá trị "ẩn danh".
trình khá tốt trong một ví dụ cố định: http://jsfiddle.net/WLTqG/29/
var ctx = document.getElementById('c').getContext('2d'),
img = new Image();
img.crossOrigin = 'anonymous';
img.src = 'https://lh3.googleusercontent.com/-LAFgeyNL894/AAAAAAAAAAI/AAAAAAAAAAA/-CWBGs9xLXI/s96-c/photo.jpg';
img.onload = function() {
ctx.drawImage(img, 0, 0);
try {
var imgData = ctx.getImageData(0, 0, 100, 100);
$('.button').on('click', function(e) {
e.preventDefault();
applyFilter(ctx, imgData);
});
} catch(err) {
$('.button').hide();
$('body').append("Access denied");
console.log(err);
}
};
function applyFilter(ctx, data) {
for (var x = 0; x < data.width; x++) {
for (var y = 0; y < data.height; y++) {
var index = 4 * (y * data.width + x);
data.data[index] = data.data[index] - 50; //r
data.data[index+1] = data.data[index+1] - 50; //g
data.data[index+2] = data.data[index+2] - 50; //b
data.data[index+3] = data.data[index+2] - 50; //a
}
}
ctx.putImageData(data, 0, 0);
}
(tôi đã sử dụng jQuery chỉ cho DOM-thao tác và các sự kiện xử lý)
Quyền, do đó sử dụng một
XmlHttpRequest
để đạt được điều này sẽ không tăng ngoại lệ ? – ArtBITĐối với một hình ảnh nhỏ, bạn có thể sử dụng XMLHttpRequest để lấy nó và sau đó tạo một URI dữ liệu trong JavaScript: http://jsfiddle.net/WLTqG/1/. Điều này hoạt động trong Firefox và Chrome. Xem http://stackoverflow.com/questions/1919972/how-do-i-access-xhr-responsebody-from-javascript để biết gợi ý cho Internet Explorer. (Tôi đã không kiểm tra giải pháp của anh ta.) – PleaseStand
Người bỏ phiếu - xin vui lòng để lại nhận xét vì sao bạn nghĩ câu trả lời này là sai. –