2013-08-21 61 views
6

Câu trả lời ở trên mà ai đó đã đề xuất, chuyển đổi hình ảnh màu của tôi sang màu đen và trắng. Vì vậy, nó không thích hợp cho câu hỏi của tôi.IllegalArgumentException: Số lượng các dải Raster nguồn và các thành phần không gian màu nguồn không khớp Đối với một hình ảnh màu Ngoại trừ

File file = new File("path");   
BufferedImage bufferedImage = ImageIO.read(file); 

đây là mã và bên dưới là hình ảnh. Tải xuống hình ảnh và lưu vào máy của bạn. Và cố gắng chạy đoạn mã trên với giá trị đúng đắn về con đường, nó sẽ ném một ngoại lệ trong chủ đề

Tải hình ảnh: https://skydrive.live.com/?cid=19547371C4F3B839&id=19547371C4F3B839%21105

Đơn giản chỉ cần nếu ai đó có thể có được một đối tượng java.awt.image.BufferedImage từ hình ảnh cho rằng đó là đủ (không nên chuyển đổi hình ảnh thành thang màu xám).

Bạn là thiên tài nếu bạn có thể trả lời câu hỏi này: D. Plz giúp đỡ.

+0

có thể trùng lặp http://stackoverflow.com/questions/10416378/imageio-read-illegal-argument-exception-raster-bands-colour-space-components –

+0

Xin chào Philipp xin vui lòng đọc câu hỏi của tôi. Tôi đã đề cập rõ ràng "không nên chuyển đổi hình ảnh thành thang màu xám". Câu trả lời mà bạn đã đề nghị chuyển đổi hình ảnh màu của tôi thành một màu xám quy mô một (màu đen và trắng), nếu bạn muốn hãy thử nó và xem. Và không đề xuất các câu hỏi khác và không cho tôi - những điểm không thử. Chịu trách nhiệm cho ý kiến ​​của bạn. –

+0

@PhilippSander Trong khi tương tự, vấn đề với hình ảnh này khác với vấn đề bạn đã liên kết. – haraldK

Trả lời

15

Không có gì sai với mã của bạn ở đây. Tôi có thể đọc hình ảnh của bạn bằng cách sử dụng plugin JPEGImageReader của tôi cho ImageIO. Trình đọc hình ảnh này cố gắng khoan dung về các lỗi JPEG, và có khả năng hơn một chút so với chuẩn Java JPEGImageReader.

Tuy nhiên, tập tin JPEG của bạn dường như có một số vấn đề nên không thể được đọc 100%:

  • Đầu tiên, hồ sơ ICC màu trong hình ảnh có 4 thành phần màu sắc, trong khi dữ liệu hình ảnh chỉ có 3 thành phần màu (điều này gây ra ngoại lệ bạn thấy). Nguyên nhân gốc rễ có lẽ là phần mềm chuyển đổi xấu. Sử dụng ExifTool hoặc phần mềm tương tự để xem siêu dữ liệu để điều tra thêm. Trình đọc của tôi sẽ đơn giản bỏ qua hồ sơ ICC.
  • Thứ hai, luồng JPEG kết thúc sớm (thiếu EOI). Bạn sẽ nhận thấy rằng có một số pixel rác ở phía dưới bên phải của hình ảnh. Không có gì bạn có thể làm về điều đó, ngoại trừ việc nhận được hình ảnh gốc (thực ra, hình ảnh chứa hình thu nhỏ và hình thu nhỏ không bị hư hại; bạn có thể thử tạo lại dữ liệu từ đó nếu bạn thực sự cần). Hình ảnh được trả về từ trình đọc của tôi phù hợp với hình ảnh được đọc bằng phần mềm gốc.
+0

Xin chào Harald cảm ơn rất nhiều vì đã trả lời. Bây giờ lỗi này rõ ràng với tôi, cảm ơn vì đã giải thích. Tôi đã cố gắng sử dụng plugin của bạn, nhưng do một số thư viện phụ thuộc bị thiếu, tôi không thể biên dịch nó (tôi đã thêm một số lọ mười haimon-imageio). Vì vậy, bạn có thể giải thích cách chính xác để sử dụng các plugin, và nó sẽ là tuyệt vời nếu bạn có thể hiển thị các mẫu mã đơn giản để có được một bộ đệm cho hình ảnh của tôi. –

+2

Chi tiết về cách sử dụng plugin trong các ứng dụng java và các thùng chứa servlet có thể được tìm thấy tại đây: https://github.com/haraldk/TwelveMonkeys –

+0

Làm việc như một sự quyến rũ :) – DominikAngerer