Ниже вы увидите изображение красивой выпечки под названием " simit " из Турции. Взято с iPad 2,следовательно, это JPEG с размерами 720 * 960 .
Проблема в том, что когда я использую метод javax.imageio.ImageIO.read
, изображение, которое он странным образом импортирует, оказывается в BufferedImage
, повернутом влево и превращающемся в 960 * 720 .
Я воспроизвел это в моей Sun JVM 1.6.0_29 в OS X и Sun JVM 1.6.0_26 в Debian. Вот код:
public class Main {
public static void main(String[] args) throws Exception {
FileInputStream stream = new FileInputStream(new File("IMG_0159.JPG"));
BufferedImage img = ImageIO.read(stream);
System.out.println("width:" + img.getWidth() + " height:"
+ img.getHeight());
}
}
Он выводит width: 960 height: 720
, и когда я сохраняю это выходное изображение, оно поворачивается влево, как я сказал ранее. Если вы хотите воспроизвести это, загрузите код и изображение из здесь и выполните следующие команды для сборки и запуска:
javac Main.java && java Main
ПРИМЕЧАНИЕ: Вы можете увидеть JPG в архиве как уже повернутый, однако он отображается как 720 * 960 на OS X, iPad, iPhone и, как вы видите выше, правильно загружен на imgur.com. И он также правильно открывается в Adobe Photoshop, правильно загружается в Facebook и т. Д.
В чем может быть проблема?