تدوير BMP وعرضه على الجانب الأيمن
-
25-09-2019 - |
سؤال
لديّ تطبيق يستقر صورة ويعرض الصورة على ImageView. المشكلة هي أنه لا يمكنني سوى التقاط الموافقة المسبقة عن علم في وضع المناظر الطبيعية حتى يتم عرض BMP على الجانب الأيمن لأعلى - هل هناك طريقة يمكنني تدويرها إلى الجانب الأيمن لأعلى إذا تم التقاط الصورة في وضع الصورة/
شكرًا!
فيما يلي الرمز الذي أستخدمه لوضع الصورة في عرض IMG -
private void processCameraImage(Intent intent) {
setContentView(R.layout.detectlayout);
((Button) findViewById(R.id.detect_face)).setOnClickListener(btnClick);
ImageView imageView = (ImageView) findViewById(R.id.image_view);
cameraBitmap = (Bitmap) intent.getExtras().get("data");
imageView.setImageBitmap(cameraBitmap);
يوجد زر اكتشاف وجوه يكتشف ما إذا كانت هناك وجوه موجودة.
المحلول
هذه هي الطريقة التي تدور بها BMP:
private Bitmap rotateImage(Bitmap b, float angle)
{
//create a new empty bitmap to hold rotated image
Bitmap returnBitmap = new Bitmap(b.Width, b.Height);
//make a graphics object from the empty bitmap
Graphics g = Graphics.FromImage(returnBitmap);
//move rotation point to center of image
g.TranslateTransform((float)b.Width/2,(float)b.Height / 2);
//rotate
g.RotateTransform(angle);
//move image back
g.TranslateTransform(-(float)b.Width/2,-(float)b.Height / 2);
}
نصائح أخرى
فيما يلي الرمز الذي استخدمته onActivityResult () في نشاطي. كان القصد الذي تم إرجاعه لاختيار صورة من النوع/*. يعمل بشكل جيد بالنسبة لي!
Uri imageUri = intent.getData();
String[] orientationColumn = {MediaStore.Images.Media.ORIENTATION};
Cursor cur = managedQuery(imageUri, orientationColumn, null, null, null);
int orientation = -1;
if (cur != null && cur.moveToFirst()) {
orientation = cur.getInt(cur.getColumnIndex(orientationColumn[0]));
}
Matrix matrix = new Matrix();
matrix.postRotate(orientation);
لا تنتمي إلى StackOverflow