Chúng tôi đang sử dụng Java2D để thay đổi kích thước ảnh được tải lên trang web của chúng tôi, nhưng chúng tôi gặp phải vấn đề (một số dường như cũ, cf .: http://forums.sun.com/thread.jspa?threadID=5425569) - một số JPEG cụ thể nâng cao CMMException
khi chúng tôi cố gắng ImageIO.read()
một InputStream chứa dữ liệu nhị phân của chúng :Có cách thay thế Java 100% cho ImageIO để đọc tệp JPEG không?
java.awt.color.CMMException: Invalid image format
at sun.awt.color.CMM.checkStatus(CMM.java:131)
at sun.awt.color.ICC_Transform.<init>(ICC_Transform.java:89)
at java.awt.image.ColorConvertOp.filter(ColorConvertOp.java:516)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.acceptPixels(JPEGImageReader.java:1114)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readImage(Native Method)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:1082)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:897)
at javax.imageio.ImageIO.read(ImageIO.java:1422)
at javax.imageio.ImageIO.read(ImageIO.java:1326)
...
(snipped thời gian còn lại của ngăn xếp dấu vết, đó là ImageIO.read()
cuộc gọi, mã của chúng tôi servlet và như vậy)
Chúng tôi thu hẹp nó xuống để lấy hình ảnh từ máy ảnh đặc biệt, và tôi chọn một bức ảnh mà trigger lỗi này: http://img214.imageshack.us/img214/5121/estacaosp.jpg. Chúng tôi nhận thấy rằng điều này chỉ xảy ra với JVM của Sun (trên Linux và Mac, chỉ cần thử nghiệm trên 1.6.0_20) - một máy kiểm tra với OpenJDK đọc cùng một ảnh mà không bị cản trở, có thể do việc triển khai khác nhau của trình đọc JPEG.
Thật không may, chúng tôi không thể chuyển đổi các JVM trong sản xuất, cũng như không sử dụng các giải pháp phụ thuộc vào bản địa như ImageMagick (http://www.imagemagick.org/).
Xét rằng, câu hỏi của tôi là: Liệu một sự thay thế cho trình đọc ảnh ImageIO có thể xử lý ảnh như ảnh được liên kết tồn tại? Nếu không, có một giải pháp thay đổi kích cỡ ảnh Java tinh khiết 100% khác mà chúng ta có thể sử dụng không?
Cảm ơn bạn!
Nhân tiện, tôi biết rằng ImageIO không xử lý hình ảnh CMYK (theo http://stackoverflow.com/questions/2408613/problem-reading-jpeg-image-using-imageio-readfile-file).Nhưng mẫu một là RGB (như xa như Mac Preview là có liên quan, sẽ được vui mừng nếu ai đó có thể xác nhận rằng) – chesterbr
Tôi đã mở một lỗi trên cơ sở dữ liệu Oracle/Sun lỗi ở đây: http://bugs.sun.com/bugdatabase /view_bug.do?bug_id=7064516 Bình chọn nếu bạn vẫn quan tâm đến việc sửa lỗi! –