2013-07-22 109 views
17

Tôi có hình ảnh trên trình duyệt.Lấy màu pixel từ một hình ảnh

Tôi muốn có được điểm ảnh trên cùng bên trái của màu hình ảnh (tại tọa độ: 0,0), cho dù hình ảnh có được xoay hay không.

Tôi có thể làm điều đó bằng cách sử dụng mã javascript hoặc php bằng cách nào?

+2

có thể gạt người, làm thế nào để có được một điểm ảnh (x, y) từ một hình ảnh trong javascript: http://stackoverflow.com/questions/8751020/how-to-get-a-pixels-color -of-an-image –

+0

Đối với một giải pháp PHP, hãy xem [lấy pixel đầu tiên từ hình ảnh bằng cách sử dụng php] (http://stackoverflow.com/questions/14178182/get-the-first-pixel-from-the-image- sử dụng-php). Mặc dù nó sẽ không giúp bạn nếu bạn muốn một hình ảnh của một trang kết xuất và không phải là một hình ảnh nhúng. Để nhận được màu pixel của trang được hiển thị, hãy xem câu trả lời được chấp nhận trên [Trình xem mắt JavaScript (cho biết màu của Pixel dưới con trỏ chuột)] (http://stackoverflow.com/questions/1936021/javascript-eyedropper-tell-color-of -pixel-dưới-con trỏ chuột). – user

+0

Bản sao có thể có của [Làm cách nào để có được tọa độ x, y của pixel từ một hình ảnh?] (Https://stackoverflow.com/questions/8751020/how-to-get-a-pixels-xy-coordinate-color-from -an-image) –

Trả lời

34
  • Tạo một document.createElement vải
  • Lấy bối cảnh 2d canvas.getContext('2d')
  • Vẽ hình ảnh vào khung context.drawImage(image, x, y)
    • Hãy chắc chắn rằng hình ảnh là từ cùng một tên miền hoặc bạn sẽ không có quyền truy cập đến pixel của nó
  • Lấy dữ liệu pixel cho hình ảnh context.getImageData(x1, y1, x2, y2)
    • Bạn muốn chỉ phía trên bên trái để context.getImageData(0, 0, 1, 1)
  • Kết quả của getImageData sẽ có một loạt các điểm ảnh trong đó là data lĩnh vực (context.getImageData(0,0,1,1).data)
    • Mảng sẽ có r, g, ba giá trị.
+0

Cảm ơn bạn. Tôi nghĩ bạn nên có phần thưởng cho một câu trả lời rất nhanh. Trường hợp là gì, nếu trình duyệt không hỗ trợ html5. Có giải pháp nào trong mã php không? – Eitan

+2

@Eitan - nếu không có hỗ trợ cho canvas thì bạn cần chuyển hình ảnh (với yêu cầu AJAX) tới máy chủ để sử dụng mã phía máy chủ để lấy dữ liệu pixel hoặc sử dụng một số tính năng Flash/Silverlight để xử lý. –

+2

Một điểm khác cần lưu ý: giá trị pixel được hiển thị với drawImage có thể khác với các giá trị trong hình ảnh của bạn do chỉnh sửa không gian màu.Điều tốt là điều này chỉ xảy ra nếu hình ảnh chứa thông tin về không gian màu. – ironic

12

Đối với hình ảnh trên trình duyệt, bạn không thể sử dụng PHP trừ khi bạn có thể chuyển hình ảnh sang máy chủ trước.

n trình duyệt, nếu bạn có thể vẽ các hình ảnh trong một canvas bạn có thể sử dụng phương pháp getImageData():

var myImg = new Image(); 
myImg.src = 'image.jpg'; 
var context = document.getElementById('canvas').getContext('2d'); 
context.drawImage(myImg, 0, 0); 
data = context.getImageData(x, y, 1, 1).data; 

Bạn sẽ phải cho phép bất kỳ luân chuyển - có lẽ bạn biết những gì xoay đã được áp dụng.

+0

Kích thước canvas phải được đặt lớn hơn hoặc bằng chiều rộng hình ảnh. Nếu không, các pixel bên ngoài độ phân giải Canvas sẽ có màu đen ngay cả khi chúng không phải là –

Các vấn đề liên quan