Я хочу создать веб-приложение, которое позволит пользователям загружать свое изображение на сервер. Когда они нажмут «Отправить», их изображение будет загружено на сервер (multipart). Перед сохранением, я хочу, чтобы сделать какую-то операцию с изображением, поэтому я решил использовать ..ImageIO.read() всегда меняет загруженное изображение
ImageIO.read (InputStream)
получить BufferedImage объект
здесь код :
public static BufferedImage getBufferedImageFromMultipartFile(MultipartFile file)
throws APIException
{
BufferedImage bi = null;
try
{
bi = ImageIO.read(file.getInputStream());
}
catch (IOException e)
{
throw new APIException(ErrorCode.SERVER_ERROR, e);
}
return bi;
}
проблема заключается в том, когда я пытаюсь загрузить картинку, которая имеет высоту больше, чем ширина таких как 3264 х 2448 (высота х ширина), то результатом всегда является изображение, которое было повернуто (2448 x 3264).
Есть ли решение проблемы?
Является ли это ошибкой или какой-либо определенной спецификацией API?
Thx.
PS. извините за мой английский: D
Я нашел аналогичный вопрос сейчас, http://stackoverflow.com/questions/9453367/is-javax-imageio-imageio-broken-it-imports-some-images-as-rotated?rq=1. Таким образом, моя проблема не в том, что ошибка ImageIO, но это спецификация API, что ImageIO не может читать детали изображения (EXIF-ориентация). СПАСИБО. –