Android: получите изображение, как мы видим в галерее вместо Stratch Image - PullRequest
0 голосов
/ 06 февраля 2012

В моем приложении я использую этот код для получения изображения из галереи и камеры:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) {     
    super.onActivityResult(requestCode, resultCode, data);     
    if (requestCode == 10 && resultCode == Activity.RESULT_OK) {             
        Uri contentUri = data.getData();          
        String[] proj = { MediaStore.Images.Media.DATA };         
        Cursor cursor = managedQuery(contentUri, proj, null, null, null);         
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);         
        cursor.moveToFirst();         
        imagePath = cursor.getString(column_index);           
        //Bitmap croppedImage = BitmapFactory.decodeFile(imagePath);
        tempBitmap = BitmapFactory.decodeFile(imagePath);
        if(!(tempBitmap == null))
        {
            // here i am changing display to the tempBitmap
            photoBitmap = Bitmap.createScaledBitmap(tempBitmap, display.getWidth(), display.getHeight(), true);
            //photoBitmap = Bitmap.createBitmap(tempBitmap, 0, 0, tempBitmap.getWidth(), tempBitmap.getHeight());
            takePhotoFromGallery = true;// edited
        }
        else
            Toast.makeText(getApplicationContext(), "Image is not valid", Toast.LENGTH_SHORT).show();

    } 
    if(resultCode == RESULT_OK && requestCode==TAKE_PHOTO_CODE){
         final File file = getTempFile(this);         
         try {           
             tempBitmap = Media.getBitmap(getContentResolver(), Uri.fromFile(file));
             photoBitmap = Bitmap.createScaledBitmap(tempBitmap, display.getWidth(), display.getHeight(), true);
             takePhotoFromCamera = true;
             // do whatever you want with the bitmap (Resize, Rename, Add To Gallery, etc)         
        } catch (FileNotFoundException e) {           
            e.printStackTrace();         
        } catch (IOException e) {           
            e.printStackTrace();         
        } 
    }
}

Теперь все отлично работает. Но я получил изображение как Stratch.

Я так думал, потому что эта строка:

photoBitmap = Bitmap.createScaledBitmap(tempBitmap, display.getWidth(), display.getHeight(), true);

здесь я выкладываю ширину изображения, высоту с шириной дисплея, высоту.

Я хочу, чтобы изображение было отображено, поскольку мы обычно можем показывать изображение в галерее. Так как сделать это возможным ???

Это изображение, которое я снимаю с камеры:

enter image description here

И вот что я вижу в своем приложении:

enter image description here

Теперь второе изображение немного растянуто. как из-за того кода строки.

Так, что я должен сделать, чтобы сделать его нормальным по высоте и ширине? Благодарю. Спасибо.

1 Ответ

1 голос
/ 06 февраля 2012

Используйте ImageView и установите тип масштаба изображения для просмотра по центру.

...