gpt4 book ai didi

java - 内存与性能,哪个最好?

转载 作者:行者123 更新时间:2023-12-01 14:37:01 25 4
gpt4 key购买 nike

我需要拍摄图像,缩放它, mask 它,添加背景(以防其中一些是透明的),然后添加覆盖图像。为此,我编写了以下内容:

Canvas canvas = new Canvas();
Bitmap mainImage = Bitmap.createScaledBitmap(((BitmapDrawable)d).getBitmap(), iconSize, iconSize, false);
Bitmap result = Bitmap.createBitmap(iconSize, iconSize, Bitmap.Config.ARGB_8888);

canvas.setBitmap(result);
Paint paint = new Paint();
paint.setFilterBitmap(false);

Bitmap mask = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(context.res, context.mask_bg)
, iconSize, iconSize, false);
canvas.drawBitmap(mask, 0, 0, paint);
canvas.drawBitmap(mainImage, 0, 0, paint);

mask = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(context.res, context.mask)
, iconSize, iconSize, false);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
canvas.drawBitmap(mask, 0, 0, paint);

mask = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(context.res, context.mask_frame)
, iconSize, iconSize, false);
paint.setXfermode(null);
canvas.drawBitmap(mask, 0, 0, paint);

现在这个操作将在我的应用程序中频繁发生。我的应用程序始终有一个服务正在运行(在本例中就是上下文)。我对图像的性能不太了解,我知道它们在空间中使用了实际大小的 4 倍,但这对我来说一遍又一遍地重新创建相同的对象是一种浪费。另外,我的应用程序的主要需求是性能而不是大小。

所以我想知道是否最好保持每次在服务中生成位图,以便它们只创建一次(只有 mainImage 位图每次都会更改),或者甚至作为可绘制的位图从中创建位图?

最佳答案

切勿在显示的 Activity/fragment 之外保存可绘制对象。
它很容易造成内存泄漏:可绘制对象保留对其 Activity 的引用,因此垃圾收集器无法销毁它,即使它已被销毁并重新创建。
请改用位图。

关于java - 内存与性能,哪个最好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16397786/

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