2009-07-28 9 views
1

J'utilise ImageIO.read pour traiter les fichiers image téléchargés. Le code est similaire àLecture d'images JCS_YCCK en utilisant ImageIO

BufferedImage bufferedImage = ImageIO.read(new ByteArrayInputStream(image.getContents())); 

J'ai réussi à résoudre la plupart des problèmes, mais celui-ci ne m'a pas aidé. L'image téléchargée a un profil JCS_YCCK, tel que défini dans com.sun.imageio.plugins.jpeg.JPEG, qui n'est pas pris en charge par com.sun.imageio.plugins.jpeg.JPEGImageReader. Cela conduit à une belle trace de pile semblable à:

Caused by: javax.imageio.IIOException: Unsupported Image Type 
    at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:910) 
    at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:885) 
    at javax.imageio.ImageIO.read(ImageIO.java:1422) 
    at javax.imageio.ImageIO.read(ImageIO.java:1326) 
    at com.example.ImageWriter.resizeEmbeddableImageInPlace(ImageWriter.java:231) 

Comment puis-je traiter ce type de JPEG en utilisant ImageIO de Java?


Mise à jour: J'ai essayé Commons-Sanselan, indiqué par une réponse, mais malheureusement, il ne supporte pas les fichiers JPEG:

org.apache.sanselan.ImageReadException: Sanselan cannot read or write JPEG images. 
    at org.apache.sanselan.formats.jpeg.JpegImageParser.getBufferedImage(JpegImageParser.java:90) 
    at org.apache.sanselan.Sanselan.getBufferedImage(Sanselan.java:1264) 
    at org.apache.sanselan.Sanselan.getBufferedImage(Sanselan.java:1231) 

Répondre

0

Une solution possible consiste à utiliser les extensions Java Advanced Imaging Image IO. Lorsqu'il est correctement installé, la conversion fonctionne hors de la boîte. Le problème est qu'il ne joue pas bien avec Maven, alors j'ai demandé Using Java Advanced Imaging with Maven. Si cela fonctionne, cette réponse sera acceptée.

-1

Je ne sais pas pour ImageIO, mais vous pourrait utiliser le Commons Sanselan library, qui offre des moyens faciles d'accéder à toutes sortes d'images.

+0

Merci! Je regarderai. –

+1

Sanselan indique explicitement que les images JPEG ne sont pas supportées. –