2013-05-08 5 views
0

Я могу только поворачивать изображение один раз, и когда я снова нажимаю кнопку, изображение замирает и не вращается. Пожалуйста, помогите мне.matrix.postRotate (90) при повороте изображения

try{ 
    //Bitmap bMap; 

    //Get ImageView from layout xml file 
    img = (ImageView) findViewById(R.id.imageView01); 

    //Decode Image using Bitmap factory. 
    Bitmap bMap = BitmapFactory.decodeFile(selectedImagePath); 

    //Create object of new Matrix. 
    Matrix matrix = new Matrix(); 

    //set image rotation value to 90 degrees in matrix. 
    matrix.postRotate(90); 

    //Create bitmap with new values. 
    Bitmap bMapRotate = Bitmap.createBitmap(bMap, 0, 0, bMap.getWidth(), bMap.getHeight(), matrix, true); 

    //put rotated image in ImageView. 
    img.setImageBitmap(bMapRotate); 

    Context context = getApplicationContext(); 
    CharSequence text = "Image Rotated" ; 
    int duration = Toast.LENGTH_SHORT; 

    Toast toast = Toast.makeText(context, text, duration); 

    toast.show(); 

}catch (Exception e) {  
    e.printStackTrace(); 
    displayExceptionMessage(e.getMessage()); 
} 
+0

Здесь вы должны повернуть уже повернутое изображение на следующий раз, а не исходное изображение, оно не будет иметь никакого эффекта повернутого исходного изображения снова. – Hardik4560

+0

Мне нужно получить изображение с изображенияПосмотреть и повернуть его снова? но как .. вы можете показать мне, потому что я новичок в андроиде. Спасибо – chai

+0

Это зависит от того, что именно вы пытаетесь добиться, получение изображения из imageView будет лучшим вариантом. – Hardik4560

ответ

2

Попробуйте

try { 
    //Bitmap bMap; 

    //Get ImageView from layout xml file 
    img = (ImageView) findViewById(R.id.imageView01); 

    //Decode Image using Bitmap factory. 
    //Bitmap bMap = BitmapFactory.decodeFile(selectedImagePath); 
    Bitmap bMap = Bitmap.createBitmap(img.getDrawingCache()); 

    //Create object of new Matrix. 
    Matrix matrix = new Matrix(); 

    //set image rotation value to 90 degrees in matrix. 
    matrix.postRotate(90); 
    matrix.postScale(0.5f, 0.5f); 

    int newWidth = bMap.getWidth()/2; 
    int newHeight = bMap.getHeight()/2; 

    //Create bitmap with new values. 
    Bitmap bMapRotate = Bitmap.createBitmap(bMap, 0, 0, newWidth, newHeight, matrix, true); 

    //put rotated image in ImageView. 
    img.setImageBitmap(bMapRotate); 

    Context context = getApplicationContext(); 
    CharSequence text = "Image Rotated" ; 
    int duration = Toast.LENGTH_SHORT; 

    Toast toast = Toast.makeText(context, text, duration); 

    toast.show(); 

} catch (Exception e) {  
    e.printStackTrace(); 
    displayExceptionMessage(e.getMessage()); 
} 

Wht я сделал в ур код я создал растрового изображения из ImageView для вращения.

Надеется, что это помогает ..

+0

ничего себе .. это работает .. СПАСИБО ВАС так много .. я действительно ценю эту помощь .. Кстати, не могли бы вы показать мне, как выполнить кадрирование изображения, загруженного в imageView? это одна из функций улучшения OCR, поскольку пользователь будет выбирать только текстовую область и игнорировать другую часть, которая не содержит текста. Большое вам спасибо – chai

+0

u значит у хотите обрезать или масштабировать изображение, прежде чем вставлять его в ImageView? – bakriOnFire

+0

обрезать изображение после поворота. – chai

Смежные вопросы