我正在编写一个简单的应用程序,它需要两个图像1)照片和2)过滤器(图像文件)然后过滤器将应用于照片。但我也希望在图像重叠后将图像保存在内部存储器中。正如您在下面的代码中看到的,在最后一行中我创建了位图对象filteredPhoto
,因此它可用于保存图像,但由于In-convertible类型而无法引用它。
有两种方法,
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");
}