2012-09-21 14 views
6

मैं इस का उपयोग कर रहा अस्तित्व में एक से Bitmap घुमाया करने के लिए:बिटकमैप को नया बनाये बिना घुमाने के लिए कैसे?

private Bitmap getRotatedBitmap(Bitmap bitmap, int angle) { 
     int w = bitmap.getWidth(); 
     int h = bitmap.getHeight(); 
     Matrix mtx = new Matrix(); 
     mtx.postRotate(angle); 
     return Bitmap.createBitmap(bitmap, 0, 0, w, h, mtx, true); 
    } 

यह नया बिटमैप बनाने के बिना यह करने के लिए संभव है?

मैं Canvas के साथ एक ही परिवर्तनशील छवि पुनः बनाने का प्रयास कर रहा था:

Bitmap targetBitmap = Bitmap.createBitmap(targetWidth, targetHeight, config); 
Canvas canvas = new Canvas(targetBitmap); 
Matrix matrix = new Matrix(); 
matrix.setRotate(mRotation,source.getWidth()/2,source.getHeight()/2); 
canvas.drawBitmap(targetBitmap, matrix, new Paint()); 

लेकिन इस दृष्टिकोण सिर्फ भ्रष्ट बिटमैप में हुई थी। तो क्या इसे हासिल करने की कोई संभावना है?

+1

कोशिश बनाने बिट्स हो और एक मैट्रिक्स रोटेशन एल्गोरिथ्म –

+1

इस उत्तर मदद कर सकता है लागू करने के लिए बिना: http://stackoverflow.com/questions/10664006/सबसे तेज़-मार्ग-टू-रोटेट-बड़े-आकार-बिटमैप/10664055 # 10664055 – Ronnie

उत्तर

0

इस कैनवास कोड पर सबसे सरल रोटेशन है, एक नया बिटमैप

canvas.save(); //save the position of the canvas 
canvas.rotate(angle, X + (imageW/2), Y + (imageH/2)); //rotate the canvas 
canvas.drawBitmap(imageBmp, X, Y, null); //draw the image on the rotated canvas 
canvas.restore(); // restore the canvas position. 
+3

यह बिटमैप को घुमाने वाला नहीं है बल्कि इसे अंदर के अंदर घुमाएगा। मैं चाहता हूं कि बिटमैप घुमाएं और इसे सेव करें। – birdy