2012-08-28 11 views
10

मैं छवि को घुमाने की कोशिश कर रहा हूं। मैं इस जावा कोड का उपयोग कर रहा:जावा - छवि रोटेशन

BufferedImage oldImage = ImageIO.read(new FileInputStream("C:\\workspace\\test\\src\\10.JPG")); 
BufferedImage newImage = new BufferedImage(oldImage.getHeight(), oldImage.getWidth(), oldImage.getType()); 
Graphics2D graphics = (Graphics2D) newImage.getGraphics(); 
graphics.rotate(Math.toRadians(90), newImage.getWidth()/2, newImage.getHeight()/2); 
graphics.drawImage(oldImage, 0, 0, oldImage.getWidth(), oldImage.getHeight(), null); 
ImageIO.write(newImage, "JPG", new FileOutputStream("C:\\workspace\\test\\src\\10_.JPG")); 

लेकिन मैं अजीब परिणाम देखें:

स्रोत:

**Sourse image:**

परिणाम:

**Result image:** http://s14.postimage.org/cjut935ip/image.jpg

आप कृपया मेरी मदद कर सकते मुझे इस समस्या के साथ?

+3

क्या आप नए इमेज के बजाए पुराने इमेज के केंद्र के बारे में घूमना नहीं चाहिए? –

+0

मैं ग्राफिक्स.रोटेट (Math.toRadians (90), oldImage.getWidth()/2, oldImage.getHeight()/2) का प्रयास करें; इसकी सहायता नहीं है। http://s13.postimage.org/7omxa1oef/image.jpg – user1631241

उत्तर

14

छवि की चौड़ाई और ऊंचाई को स्विच करने के लिए पर्याप्त नहीं है। आप रोटेशन की उत्पत्ति के रूप में छवि के केंद्र का उपयोग कर घूर्णन कर रहे हैं। पेपर की शीट के साथ बस कोशिश करें और आप देखेंगे कि यह वही काम करता है। आपको पेपर को थोड़ा सा स्थानांतरित करना होगा, जिसका अर्थ यह है कि इसे ठीक करने के लिए एक ट्रांसफॉर्म लागू करना है।

graphics.translate((newImage.getWidth() - oldImage.getWidth())/2, (newImage.getHeight() - oldImage.getHeight())/2); 
+0

यह काम करता है! बहुत धन्यवाद! – user1631241

+0

मुझे पता है :) आपका स्वागत है। –

+0

मुझे इस बारे में तुरंत सोचने के लिए शर्म आती है ... :-p – oldrinb

0

घुमाव के कारण नई छवि के विभिन्न आकार हैं। इसे आजमाएं: BufferedImage newImage = new BufferedImage (oldImage.getWidth(), oldImage.getHeight(), oldImage.getType());

+0

उह, वह बहुत जानता है कि विभिन्न आकार हैं। आपका कोड कुछ भी हल नहीं करता है। – oldrinb

+0

पहले से ही कोशिश कर रहा है। इसके बाद मेरे पास है: http://s11.postimage.org/4jvhjtewz/image.jpg – user1631241

0

कोशिश हो रही है अपने पैनल की सीमा है जिस पर आप अपने ड्राइंग

Rectangle rect = this.getBounds(); 

करना और फिर कार्य करें:

graphics.rotate(Math.toRadians(90), (rect.width - newImage.getWidth())/2, (rect.height - newImage.getHeight())/2); 

आशा चीयर्स मदद कर सकता है!

+0

एक मिनट के लिए देर हो चुकी थी ... अच्छा: पी –

0

आप इस काम यह होगा की तरह लिख सकते हैं: तो, तुरंत घुमाने कॉल के बाद, यह करते हैं।

BufferedImage newImage = new BufferedImage(oldImage.getWidth(), oldImage.getHeight(), oldImage.getType()); 

मुझे लगता है कि width और height के लिए जगह अपने कोड में गलत है।

संबंधित मुद्दे