2010-04-18 34 views
7

Tôi có một mã sử dụng byte [] có chứa một byte hình ảnh jpeg2000. Tôi muốn hiển thị này trong thành phần jLabel howto làm điều này? Bất cứ ai có ý tưởng hoặc mã để làm gì?đọc các tệp jpeg2000 trong java

Trả lời

4

Bạn sẽ làm điều đó theo cách này

Image img = ImageIO.read(new ByteArrayInputStream(imageBytes)); 
ImageIcon imgIcon = new ImageIcon(img); 

JLabel label = new JLabel(imgIcon); 

nhưng các bộ giải mã JPG2000 không được cung cấp với SDK tiêu chuẩn, bạn nên đầu here (Java Advanced Imaging) và sử dụng bộ giải mã phù hợp với định dạng đó.

+0

Tôi đã tải xuống jai (từ trang web java, không phải từ liên kết của bạn, bởi vì tôi không thể tìm thấy tệp jai để tải xuống) nhưng, khi tôi cố gắng sử dụng cách của bạn để đọc hình ảnh. Tôi có ngoại lệ Null, tôi không biết tại sao. ngay cả khi tôi đã thêm các tập tin jar vào dự án của tôi (tham khảo chúng) .. vì vậy, những gì các giải pháp cho rằng ?? – Q8Y

3

Dường như sự hỗ trợ của các tệp jpeg2000/(.jp2) đã bị xóa khỏi Java Advanced Imaging (JAI).

Bằng cách bỏ cài đặt JAI 1.1.3 và cài đặt phiên bản cũ hơn 1.1, tôi sắp đọc tệp .jp2 và không còn thấy con trỏ null nữa.

Phiên bản 1.1 có sẵn tại đây. http://download.java.net/media/jai-imageio/builds/release/1.1/

Phiên bản 1.1 danh sách của codec cho - g3fax g4fac jiio jp2k jpeg và png

+0

Liên kết đã chết, đây là liên kết mới tới kho lưu trữ oracle http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-client-419417.html – Kalaschni

2

Các tùy chọn duy nhất mà tôi biết đều dựa trên jj2000.

jai-ImageIO lõi cung cấp hỗ trợ thông qua một mô-đun của bên thứ ba thêm:

https://github.com/stain/jai-imageio-core

https://github.com/jai-imageio/jai-imageio-jpeg2000

Nó sẽ tự đăng ký với ImageIO và sau đó bạn sẽ có thể đọc các tệp jpeg2000 như bạn sẽ làm bất kỳ png, bmp hoặc jpeg nào.

Mặc dù jj2000 là một lựa chọn, api không được thiết kế để sử dụng hàng ngày.

Các tùy chọn khác bao gồm JMRTD, cung cấp gói riêng cho jj2000, hoặc phiếu mua hàng thương mại, JDeli.