从 ImageView 对象获取原始图像到位图 android

问题描述

我的应用中有一个椅子的 ImageView 对象。我有一个我想使用的库并且需要图像为 BGR888 图像格式。

我使用 Camera2 API 问了一个几乎准确的问题 here。我发现答案很有帮助,我决定让我的应用更容易(使用 1 个 ImageView)来尝试实施该问题的建议。

所以我尝试的步骤是:

  1. 将 ImageView 对象解码为位图(这是从 imageview 对象中获取原始图像)

但是,我仍然对如何获取原始图像感到困惑……在我的 onCreate() 方法中会是这样吗?

Bitmap bm = BitmapFactory.decodeResource(getResource(),R.id.imageView);

bm 会返回解码后的位图,所以它只是像素?

public class MainActivity extends AppCompatActivity {

    TextView textView;
    ImageView imageView;
    int finalHeight,finalWidth;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView = findViewById(R.id.imageView);
        textView = findViewById(R.id.textView);
        getWidthHeight();

    }

    void getWidthHeight(){
        ViewTreeObserver vto = imageView.getViewTreeObserver();
        vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
            public boolean onPreDraw() {
                // Remove after the first run so it doesn't fire forever
                imageView.getViewTreeObserver().removeOnPreDrawListener(this);
                finalHeight = imageView.getMeasuredHeight();
                finalWidth = imageView.getMeasuredWidth();
                textView.setText("Height: " + finalHeight + " Width: " + finalWidth);
                Log.d("height of img",String.valueOf(finalHeight));
                Log.d("width of img",String.valueOf(finalWidth));

                return true;
            }
        });
    }
}

解决方法

如果您想将 Imageview 图像转换为位图,请按照以下代码进行操作。

private Bitmap convertToBitmap(){
    BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
    Bitmap bitmap = drawable.getBitmap();
    return bitmap;
}

ConvertToBitmap() 方法返回位图文件。 你可以通过调用这个来获取Imageview位图。