Tôi đang sử dụng html5 Canvas
để lấy màu từ hình ảnh. Đối với điều này tôi đã viết đoạn code sau trong javascript:Không thể lấy dữ liệu hình ảnh từ canvas vì canvas đã bị nhiễm độc bởi dữ liệu gốc xuất xứ
http://jsfiddle.net/8dQSS/1/ (Xin vui lòng kiểm tra giao diện điều khiển để xem ngoại lệ)
function getImageColor() {
var colors = [];
var image = new Image();
image.onload = function() {
var canvas = document.createElement("canvas");
canvas.width = image.width;
canvas.height = image.height;
// Draw the image in canvas
var ctx = canvas.getContext("2d");
ctx.drawImage(image, 0, 0);
// Get the pixel data
var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
// Loop through imageData.data - an array with 4 values per pixel: red, green, blue, and alpha
for (var x = 0; x < imageData.width; x++) {
for (var y = 0; y < imageData.height; y++) {
var index = 4 * (y * imageData.width + x);
var r = imageData.data[index];
var g = imageData.data[index + 1];
var b = imageData.data[index + 2];
var a = imageData.data[index + 3];
colors.push("rgb(" + r + "," + g + "," + b + ")");
}
}
};
image.src = "http://www.xxxxxxxxxxxx.com/demos/assets/image.jpg";
}
Đoạn mã trên được ném ngoại lệ sau đây:
Unable to get image data from canvas because the canvas has been tainted by cross-origin data.
Uncaught Error: SECURITY_ERR: DOM Exception 18
thể ai xin vui lòng cho tôi biết làm thế nào để giải quyết vấn đề này?
Không sử dụng hình ảnh từ các lĩnh vực khác, mà nội dung bạn không được phép truy cập? – Bergi
Có lẽ nó sẽ giúp chẩn đoán (đó là một bài cũ): Tôi có lỗi này từ một canvas tôi đã tạo ra bản thân mình từ một URI dữ liệu được tạo ra từ một phần tử SVG, mà không có bất kỳ hình ảnh nào. Hoạt động trên FF và Safari tốt. – LeeGee
Tôi nhận được hình ảnh này từ một hình ảnh mà tôi đã tạo động với JavaScript từ phần tử SVG và chuyển thành URI dữ liệu. Đó là một nỗi đau, sau đó nói: "Uncaught SecurityError: Một nỗ lực đã được thực hiện để vượt qua chính sách bảo mật của tác nhân người dùng." Chrome đang cố gắng quá thông minh? – LeeGee