在这里我制作了一个位图,它的背景是透明的,但它不起作用,并使背景变黑:
Bitmap baseBitmap = null;
Canvas canvas;
Bitmap mergedBitmap = null;
baseBitmap = imageViewToBitmap(imgForground);
mergedBitmap = Bitmap.createBitmap(baseBitmap.getWidth(), baseBitmap.getHeight(), Bitmap.Config.RGB_565);
canvas = new Canvas(mergedBitmap);
canvas.drawBitmap((baseBitmap), matrix, null);
下面是我用来从imageview中提取位图的函数:
public Bitmap imageViewToBitmap(ImageView imageView) {
Drawable drawable = imageView.getDrawable();
Bitmap bitmap = Bitmap.createBitmap(drawable.getMinimumWidth(), drawable.getMinimumHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
drawable.draw(canvas);
return bitmap;
}
将其发送到其他活动:
Intent intent = new Intent(EditImageActivity.this, FilterImageActivity.class);
intent.putExtra("uri", getImageUri(getApplicationContext(), bitmap).toString());
startActivity(intent);
函数getImageUri是:
public Uri getImageUri(Context inContext, Bitmap inImage) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.PNG, 100, bytes);
imgForground.setImageBitmap(inImage);
String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
return Uri.parse(path);
}
在另一个活动中,使用getintent将图像背景设置为黑色:
Intent intent = getIntent();
Uri uri = Uri.parse(intent.getStringExtra("uri"));
imageView.setImageBitmap(bmp);
发布于 2021-01-19 09:18:47
已使用RGB_565选项创建了位图。
mergedBitmap = Bitmap.createBitmap(baseBitmap.getWidth(), baseBitmap.getHeight(), Bitmap.Config.RGB_565); // your code
它不支持透明,因此您需要使用ARGB_8888来实现透明。
Canvas canvas;
Bitmap mergedBitmap = Bitmap.createBitmap(baseBitmap.getWidth(), baseBitmap.getHeight(), Bitmap.Config.ARGB_8888); // changed code
Bitmap baseBitmap = imageViewToBitmap(imgForground);
canvas = new Canvas(mergedBitmap);
canvas.drawColor(0);
canvas.drawBitmap(baseBitmap, matrix, null);
发布于 2021-01-19 09:35:25
添加以下内容以使背景透明,
canvas.drawColor(Color.TRANSPARENT)
https://stackoverflow.com/questions/65788464
复制相似问题