Ниже вы увидите фотографию красивой выпечки из Турции " 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 в архиве уже повернут, однако на OS X, iPad, iPhone он выглядит 720 * 960, и, как вы видите выше, он правильно загружен на imgur.com.И он также правильно открывается в Adobe Photoshop, корректно загружается в Facebook и т. Д.
В чем здесь проблема?