2015-05-12 3 views
1

Я пытаюсь преобразовать мой BufferedImage к InputStream, используя следующие:BufferedImage в InputStream - формат отличается

BufferedImage bi = ImageIO.read(file.getInputStream()); 
bi = Scalr.resize(bi, 300); 
ByteArrayOutputStream os = new ByteArrayOutputStream(); 
ImageIO.write(bi, file.getContentType(), os); //the content type is specified as image/jpeg 

Проблема я столкнулся в том, что мой file.getContentType() возвращает значение, как «изображение/JPEG» вместо например «jpg», и таким образом показывает поврежденный файл.

Есть ли способ конвертировать это в jpg (или заставить его, возможно, принимать изображение/jpeg)? У меня есть много других форматов файлов (например, png) и думаю, что оператор switch, который делает некоторую логику, чтобы проверить, какой тип содержимого будет совершенно ненужным.

ответ

2

.jpeg и .jpg являются эквивалентными расширениями - jpg существует из-за исторических требований Windows к формату файла с именем файла 8.3.

Чтобы получить необходимое расширение, вытащить его из типа контента:

final String contentType = file.getContentType(); 
contentType.substring(contentType.lastIndexOf("/") + 1) 
+0

На самом деле, расширение файла не имеет значения в данном случае. Параметр, присланный в 'ImageIO.write', является неофициальным« именем формата ». Будут выполняться любые «JPEG», «JPG», «jpeg» или «jpg». – haraldK

 Смежные вопросы

  • Нет связанных вопросов^_^