2012-06-22 47 views
5

Có cách nào so sánh hai tệp hình ảnh có tên tệp khác nhau không? Vì vậy, tôi đang tìm kiếm để xem nếu họ là bằng javascript. Điều này có thể không?Có thể so sánh hai hình ảnh trong Javascript không?

Sử dụng cho mục đích này: Tôi có một bộ sưu tập các hình ảnh cần bật lên trong hộp đèn. Khi hộp đèn mở ra, tôi đang móc vào cuộc gọi lại để kiểm tra các hình ảnh trùng lặp và khi được tìm thấy, hãy xóa chúng khỏi thư viện hộp đèn để người dùng không nhìn thấy hình ảnh lặp lại.

+0

Xem xét JavaScript không truy cập vào hệ thống tệp, không. –

+0

Bạn đang cố gắng so sánh loại nào? – nullpotent

+0

Đang cố gắng xem liệu hai hình ảnh có giống hệt nhau ngay cả khi chúng có tên tệp khác nhau hay không. –

Trả lời

5

Tôi đoán bạn có thể. Psuedocode:

  • Kiểm tra xem hình ảnh có cùng chiều rộng và chiều cao không. Nếu không, chúng không thể giống nhau.
  • Tạo canvas sẽ vừa với cả hai hình ảnh.
  • Vẽ hình ảnh trên canvas.
  • So sánh chúng pixel-điểm ảnh. Điều này có thể được thực hiện khá dễ dàng bằng cách sử dụng mã được mượn từ getPixel from HTML Canvas?
  • Hãy nhớ thoát khỏi vòng lặp ngay khi một pixel đơn không khớp.
  • Thời gian chạy trường hợp xấu nhất của bạn sẽ là O (wh), xảy ra khi hình ảnh thực sự bằng nhau.
+0

Đúng, chỉ là những gì tôi đang trong quá trình nhập. Nó hoạt động, nhưng sẽ rất, rất chậm đối với một số lượng lớn các hình ảnh. –

+0

Hmmm, trong hindsight Tôi nghĩ rằng cách tiếp cận tốt hơn cho tôi là sử dụng AJAX và PHP để xử lý so sánh .... Dường như việc sử dụng JS khá phức tạp. –

+0

Eh, PHP cũng sẽ phải thực hiện so sánh từng pixel. Bạn chỉ cần đặt tải trên máy chủ của bạn thay vì phân phối nó cho máy của người dùng. –

0

Kiểm tra kích thước hình ảnh nếu kích thước của chúng bằng nhau hay không.

Và đừng quên kiểm tra chiều rộng cũng như chiều cao.

To find image file size

+0

Hai hình ảnh có thể giống hệt nhau trong khi có các tệp khác nhau. So sánh hình ảnh PNG RGB đầy đủ so với cùng một hình ảnh trong Chỉ mục-PNG. So sánh hình ảnh PNG được lập chỉ mục đó so với hình ảnh có màu không sử dụng trong pallette. –

+0

Xin vui lòng cho tôi một ví dụ, tôi rất can đảm về điều đó. – totten

+0

http://adamhaskell.net/img/imgsize/ Cùng một hình ảnh ba lần, các phương pháp tiết kiệm khác nhau, các tệp khác nhau, cùng một định dạng. –

0

Tyler đúng, bạn không thể truy cập hệ thống tệp mà không có sự đồng ý của người dùng.

Nhưng nếu bạn muốn so sánh các hình ảnh có sẵn cho các mã javascript, ví dụ bằng cách sử dụng một địa chỉ hoặc sử dụng một trường upload, bạn nên kiểm tra này SO câu hỏi: Compare two Images in JavaScript

Về cơ bản, bạn chuyển đổi hình ảnh thành phần tử canvas và sử dụng giá trị base64 để so sánh hai giá trị, giống như cách mọi người xác nhận xem tài liệu có "hợp lệ" hay không bằng cách kiểm tra tổng kiểm của tài liệu đó.

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