我正在编写一个简单的应用程序,它需要两个图像 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");
}