欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > Android 中,新建 Bitmap 的几种方式:

Android 中,新建 Bitmap 的几种方式:

2025/4/16 13:35:16 来源:https://blog.csdn.net/lui0617/article/details/147086096  浏览:    关键词:Android 中,新建 Bitmap 的几种方式:

在 Android 中,你可以通过多种方式创建一个新的 Bitmap 对象,以下是几种常见的方法:


----------------------------------------------------------------------------------------------------------
‌方法 1:使用 Bitmap.createBitmap()(指定宽高和配置)

// 创建一个空白的 Bitmap(宽 100px,高 100px,ARGB_8888 格式)
Bitmap bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
// 可选:填充颜色(例如红色)
    Canvas canvas = new Canvas(bitmap);
    Paint paint = new Paint();
    paint.setColor(Color.RED);
    canvas.drawRect(0, 0, 100, 100, paint);

Bitmap.Config 可选值‌:
ARGB_8888(默认,32 位,支持透明)
RGB_565(16 位,无透明,节省内存)
ARGB_4444(16 位,支持透明,已废弃)
ALPHA_8(8 位,仅存储透明度)
----------------------------------------------------------------------------------------------------------
方法 2:从资源文件加载 Bitmap
// 从 res/drawable 加载图片
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.your_image);

// 从 assets 文件夹加载
try (InputStream is = getAssets().open("your_image.png")) {
    Bitmap bitmap = BitmapFactory.decodeStream(is);
} catch (IOException e) {
    e.printStackTrace();
}

----------------------------------------------------------------------------------------------------------
方法 3:从文件路径加载 Bitmap

String imagePath = "/sdcard/Pictures/test.jpg";
Bitmap bitmap = BitmapFactory.decodeFile(imagePath);

// 可选:调整大小(防止 OOM)
Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, newWidth, newHeight, true);

----------------------------------------------------------------------------------------------------------
‌方法 4:从 View 生成 Bitmap

// 例如,将一个 View 转换为 Bitmap
View view = findViewById(R.id.your_view);
view.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false); // 清理缓存

----------------------------------------------------------------------------------------------------------
方法 5:从 Canvas 绘制 Bitmap

Bitmap bitmap = Bitmap.createBitmap(200, 200, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setColor(Color.BLUE);
canvas.drawCircle(100, 100, 50, paint); // 画一个蓝色圆形

----------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------

‌注意事项‌
‌1. 内存管理‌:
    ~Bitmap 占用内存较大,建议用 BitmapFactory.Options 进行优化:
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inSampleSize = 2; // 缩小 2 倍加载
    Bitmap bitmap = BitmapFactory.decodeFile(path, options);
    ~使用后调用 bitmap.recycle() 释放内存(但 Android 2.3+ 后一般不需要手动回收)。

2. ‌OOM(内存溢出)问题‌:
    大图建议用 Glide、Picasso 等库加载。

3.线程安全‌:
    Bitmap 操作建议在子线程进行(如 AsyncTask、RxJava、Coroutine)。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
方法    适用场景
Bitmap.createBitmap()    创建空白 Bitmap
BitmapFactory.decodeResource()    从 res/drawable 加载
BitmapFactory.decodeFile()    从文件路径加载
View.getDrawingCache()    将 View 转 Bitmap
Canvas 绘制        动态绘制图形

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词