घूर्णन के रूप में कुछ छवियों को आयात करता है नीचे आप तुर्की से "simit" नामक प्यारी पेस्ट्री की एक तस्वीर देखेंगे। इसे आईपैड 2 से लिया जाता है, इसलिए यह आयाम 720 * 960 के साथ एक जेपीईजी है।क्या javax.imageio.ImageIO टूटा हुआ है? यह
समस्या यह है, जब मैं javax.imageio.ImageIO.read
विधि, छवि यह अजीब आयात का उपयोग करने के लिए एक है BufferedImage
छोड़ दिया घुमाया और 960 * 720 हो जाता है।
मैंने इसे डेबियन पर ओएस एक्स और सन जेवीएम 1.6.0_26 पर अपने सूर्य जेवीएम 1.6.0_29 में पुन: उत्पन्न किया।
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
नोट: यदि आप का निर्माण और चलाने के लिए here से, डाउनलोड कोड और चित्र पुन: पेश और निम्न कमांड को चलाने के लिए चाहते हैं, तो ओएस एक्स, आईपैड, आईफोन पर 720 * 960 और जैसा कि आप ऊपर देखते हैं, यह imgur.com पर सही तरीके से अपलोड किया गया है। और यह एडोब फोटोशॉप में भी सही ढंग से खोला गया है, फेसबुक पर सही तरीके से अपलोड किया गया है।
यहां समस्या क्या हो सकती है?
आप शायद सही हैं। मैंने अभी कुछ एक्सिफ़ व्यूअर http://regex.info/exif.cgi से इसकी पुष्टि की है हालांकि अपाचे संसलन स्पष्ट रूप से बताता है कि यह जेपीईजी का समर्थन नहीं करता है। ImageIO पर शर्म, अभी भी एक समाधान की तलाश में है। –
सांसेलन के साथ आप EXIF ओरिएंटेशन जानकारी पढ़ सकते हैं, और उसके बाद छविमैट के साथ पढ़े गए बिटमैप को घुमाएं .. बेशक एक एकीकृत समाधान बेहतर होगा, लेकिन मुझे कोई भी शुद्ध जावा नहीं मिला ... जेएनआई अगर हमेशा जेएमआईजी होता है पुस्तकालय ठीक हैं –
http://stackoverflow.com/questions/5905868/am-i-making-this-too-complicated-image-rotation –