2

我正在编写一个简单的应用程序,它需要两个图像 1)照片和 2)过滤器(图像文件),然后过滤器将应用于照片。但我也想在图像重叠后将图像保存在内部存储中。正如您在下面的代码中看到的,在最后第二行中,我创建了位图对象filteredPhoto,因此它可以用于保存图像,但由于不可转换类型,它不能被引用。

有两种方式,

1)LayerDrawable对象转换Drawable为位图对象并稍后将其引用到位图对象(通过强制转换)

2)如果可能,LayerDrawable直接转换为。Bitmap

谁能解释我如何做到这一点?

注意:其他人可能已提出此问题,但没有人正确回答。他们中的大多数人说使用Canvas,但我找不到如何Canvas帮助我解决我的问题,所以请不要将我的问题标记为重复。

代码 :

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    theImageViewMID = (ImageView) findViewById(R.id.theImageView_MID);

    Drawable layers[] = new Drawable[2];
    layers[0] = ContextCompat.getDrawable(this, R.drawable.image_1546);
    layers[1] = ContextCompat.getDrawable(this, R.drawable.new_filter);
    layers[1].setAlpha(75);

    LayerDrawable layerDrawable = new LayerDrawable(layers);

    theImageViewMID.setImageDrawable(layerDrawable);

    layerDrawable.set

    Bitmap filteredPhoto = ((BitmapDrawable) LayerDrawable).getBitmap();
    //MediaStore.Images.Media.insertImage(getContentResolver(), filteredPhoto, "THIS IS TITLE", "THIS IS DESCRIPTION");
}
4

0 回答 0