首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将位图的Uri发送到其他活动时,使位图的背景透明android

将位图的Uri发送到其他活动时,使位图的背景透明android
EN

Stack Overflow用户
提问于 2021-01-19 09:14:42
回答 2查看 119关注 0票数 0

在这里我制作了一个位图,它的背景是透明的,但它不起作用,并使背景变黑:

代码语言:javascript
运行
AI代码解释
复制
    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中提取位图的函数:

代码语言:javascript
运行
AI代码解释
复制
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;
}

将其发送到其他活动:

代码语言:javascript
运行
AI代码解释
复制
Intent intent = new Intent(EditImageActivity.this, FilterImageActivity.class);
intent.putExtra("uri", getImageUri(getApplicationContext(), bitmap).toString());
startActivity(intent);

函数getImageUri是:

代码语言:javascript
运行
AI代码解释
复制
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将图像背景设置为黑色:

代码语言:javascript
运行
AI代码解释
复制
 Intent intent = getIntent();

   Uri uri = Uri.parse(intent.getStringExtra("uri"));
                imageView.setImageBitmap(bmp);
EN

回答 2

Stack Overflow用户

发布于 2021-01-19 09:18:47

已使用RGB_565选项创建了位图。

代码语言:javascript
运行
AI代码解释
复制
mergedBitmap = Bitmap.createBitmap(baseBitmap.getWidth(), baseBitmap.getHeight(), Bitmap.Config.RGB_565); // your code

它不支持透明,因此您需要使用ARGB_8888来实现透明。

代码语言:javascript
运行
AI代码解释
复制
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);
票数 1
EN

Stack Overflow用户

发布于 2021-01-19 09:35:25

添加以下内容以使背景透明,

代码语言:javascript
运行
AI代码解释
复制
canvas.drawColor(Color.TRANSPARENT)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65788464

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文