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 绘制        动态绘制图形

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值