0
我想在ImageView中顯示一個位圖。使用Camera2 API,我得到ImageReader.OnImageAvailableListener
上的ImageReader
。然後,我從圖像中創建位圖:位圖不正確的大小和方向
private final ImageReader.OnImageAvailableListener mOnImageAvailableListener = new
ImageReader.OnImageAvailableListener() {
@Override
public void onImageAvailable(ImageReader reader) {
mBackgroundHandler.post(new ImageSaver(reader.acquireLatestImage()));
}
};
private class ImageSaver implements Runnable {
private final Image mImage;
public ImageSaver(Image image) {
mImage = image;
}
@Override
public void run() {
ByteBuffer byteBuffer = mImage.getPlanes()[0].getBuffer();
byte[] bytes = new byte[byteBuffer.remaining()];
byteBuffer.get(bytes);
// need to set the bitmap the size of the screen
final Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
runOnUiThread(new Runnable() {
@Override
public void run() {
imageView.setImageBitmap(bitmap);
}
});
正如你從截圖中可以看出來,位圖不填滿整個屏幕,它是在橫向而不是縱向。我的ImageView看起來像這樣:
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageView"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true" />
它的父母是填充整個屏幕的RelativeLayout。那麼我做錯了什麼?
這可能有所幫助:https://stackoverflow.com/questions/9015372/how-to-rotate-a-bitmap-90-degrees – Barns