gpt4 book ai didi

android - 位图在保存时失去透明度

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:28:59 27 4
gpt4 key购买 nike

我在尝试将位图保存到外部图片目录时遇到问题。当我使用 Bitmap.compress 函数保存它时,位图失去透明度并使背景变黑。但是当我将位图传递给 ImageView 并在 Activity 中显示它时,它看起来很好并且具有透明度。只有当我尝试保存它时,透明度才会变黑。

我不得不说,我使用两个位图和 porterduff 模式在位图上绘制路径并仅显示绘制路径中的图片,所有其他像素应被切断或透明。

下面是创建路径位图的函数:

private void createPathBitmap(RectF rect, Bitmap bitmap, Path path) {
RectF tmpRect = new RectF(rect);
Bitmap src = Bitmap.createBitmap(bitmap, (int) tmpRect.left, (int) tmpRect.top, (int) tmpRect.width(), (int) tmpRect.height());
Bitmap dst = Bitmap.createBitmap(src.getWidth(), src.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(dst);

Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeWidth(mDisplayDensity * SnippetLayer.PATH_DIAMETER);
path.offset(-rect.left, -rect.top);
canvas.drawPath(path, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
RectF srcRect = new RectF(0, 0, rect.width(), rect.height());
canvas.drawBitmap(src, null, srcRect, paint);
BitmapManager.sBitmapSnippet = dst;
}

下面是将该位图保存到外部存储器的方法:

 SimpleDateFormat dateFormat = new SimpleDateFormat("HH_mm_ss_dd_MM_yyyy");
File snippetFile = new File(picDir, fileName+"_"+dateFormat.format(new Date())+".png");
try {
FileOutputStream fileOutputStream = new FileOutputStream(snippetFile);
BitmapManager.sBitmapSnippet.setHasAlpha(true);
BitmapManager.sBitmapSnippet.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream);
fileOutputStream.flush();
fileOutputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

图片仅在路径中显示,其余边界框为黑色且不透明。感谢您的帮助。

最佳答案

我正在使用 compress() 方法将位图写入输出流:

bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);

使用 PNG 格式很重要。 JPEG 将我的透明背景转换为黑色。

关于android - 位图在保存时失去透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26801862/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com