2017-02-09 39 views
0

У меня возникла странная проблема в моем приложении для Android. У меня есть пользовательский экран камеры для фотографирования документов.BitmapFactory decodeByteArray crop изображения

Как вы можете видеть на фотографиях, сохраненное изображение Galaxy S4 (Android 5.0.1) аналогично экрану камеры, но в Galaxy S7 (Android 6.0.1) изображение обрезается сверху и снизу.

S4 Экран камеры

S4 Camera Screen

S4 Результат Изображение

S4 Result Image

S7 Экран камеры

S7 Camera Screen

S7 Результат Изображение

S7 Result Image

Мои связанные блоки кода являются; "onPictureTaken"

@Override 
public void onPictureTaken(byte[] data, Camera camera) { 

    if (data == null) { 
     return; 
    } 

    Bitmap bmp = Tools.getBitmap(data); 

    super.onBackPressed();   
} 

"getBitmap"

public class Tools { 
/*.....*/ 
    public static Bitmap getBitmap(byte[] data){ 
/*.....*/ 
     Bitmap unscaledBitmap = BitmapFactory.decodeByteArray(data, 0, data.length); 

     return unscaledBitmap; 
    } 
} 

Может кто-нибудь объяснить, почему это может быть?

Заранее спасибо

+1

Я считаю, это происходит потому, что разрешение камеры предварительного просмотра отличается от ее выхода разрешающая способность. –

ответ

0

Я не смотрит на меня, что S4 изображения такое же, как экран, есть серая зона внизу и слева.

В принципе, если вы обрезаете изображение, отличное от рациона вашего изображения, изображение не заполняет весь экран. Затем вы можете либо показать пустое место (ту серую область, которую вы показываете), либо обрезать ее по центру, которая будет обрезать стороны вашего изображения.

1

после многих попыток, я нашел его о размере выходного изображения, как упоминалось выше, Нэвин и решить ее с setPictureSize()

Camera.Size size=getBestPreviewSize(display.getHeight(), display.getWidth(), parameters); 
parameters.setPreviewSize(size.width, size.height); 
parameters.setPictureSize(size.width, size.height); 
this.camera.setParameters(parameters);