Android中的Bitmap

本文详细介绍如何在Android中创建、解码、压缩及回收Bitmap的方法。包括从int数组创建位图、解码图片文件、按需解码以节省内存、位图压缩技巧以及不同Android版本下位图的回收方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、创建一个Bitmap
(1)从int数组创建位图—Bitmap

int[] piexls={'A','R','G','B'};        Bitmap.createBitmap(piexls,12,8,Bitmap.Config.ARGB_8888);

(2)将一个图片文件解码为Bitmap
由解码器创建——BitmapFactory

public static Bitmap decodeFile(String pathName) {
        return decodeFile(pathName, null);
    }
public static Bitmap decodeResource(Resources res, int id, Options opts) 
public static Bitmap decodeStream(InputStream is, Rect outPadding, Options opts) 

(3)位图数据存放在byte数组中

求byte数组的大小

//如ARGB bitcount为4
int size=(bitmap.getWidth())*(bitmap.getHeight())*(bit count);

(4)获取某个像素数据

//传入坐标
int getPixel(int x,int y)
//传入一片区域,获得区域数据
void getPiexls(int[] pixels,inf offset)

二、按需解码,减少加载到内存图片的大小

        BitmapFactory.Options options = new BitmapFactory.Options();
        //设置为true,即不获取图片的像素数据,只获取图片的宽高
        options.inJustDecodeBounds = true;
        //根据目标显示尺寸设置采样大小,不小于1且为2的整次幂
        options.inSampleSize = 8;
        //调整位图设置
        options.inPreferredConfig = Bitmap.Config.RGB_565;
        Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/tiger.jpg", options);
        log(context, "bitmap in memory: " + bitmap.getByteCount());

三、Bitmap压缩

public boolean compress(CompressFormat format, int quality, OutputStream stream) 
public static Bitmap createScaledBitmap(Bitmap src, int dstWidth, int dstHeight,
            boolean filter)

四、回收位图
(1)小于3.0
位图数据存放在native heap中
需要主动调用recycle回收
(2)大于等于3.0
位图数据存放在虚拟机堆中
内存由虚拟机自动管理,可以不掉用recycle

五、点9图
这里写图片描述
拉伸部分为黑色所对应行或列部分
中间灰色部分为内容填充区域

相关资料:
Android开发官方培训文档 http://hukai.me/android-training-course-in-chinese/graphics/displaying-bitmaps/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值