Android中的Bitmap

一、创建一个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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android,可以使用多种方式来读取图片并生成Bitmap对象。以下是几种常见的方法: 1. 使用文件流方式读取图片: ``` FileInputStream fis = new FileInputStream("/sdcard/test.png"); Bitmap bitmap = BitmapFactory.decodeStream(fis); ``` 2. 使用R文件方式读取图片: ``` Bitmap bitmap = BitmapFactory.decodeResource(this.getContext().getResources(), R.drawable.test); ``` 3. 使用ResourceStream方式读取图片,但不使用R文件: ``` Bitmap bitmap = BitmapFactory.decodeStream(getClass().getResourceAsStream("/res/drawable/test.png")); ``` 在读取图片时,还可以通过设置BitmapFactory.Options来进行一些优化操作。例如,可以设置inSampleSize来减小图片的宽高,从而减少内存占用: ``` BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 2; // 图片宽高都为原来的二分之一,即图片为原来的四分之一 Bitmap bitmap = BitmapFactory.decodeStream(fis, null, options); ``` 需要注意的是,以上方法的路径或资源ID需要根据实际情况进行修改。此外,在使用ImageView显示Bitmap时,可以通过开启视图缓存的方式来获取缓存的Bitmap对象: ``` imageView.setDrawingCacheEnabled(true); Bitmap bitmap = Bitmap.createBitmap(imageView.getDrawingCache()); imageView.setDrawingCacheEnabled(false); ``` 最后,根据需要对获取到的Bitmap对象进行进一步的处理,例如模糊处理等。 #### 引用[.reference_title] - *1* [安卓Bitmap读取图片](https://blog.csdn.net/zbuger/article/details/46895335)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Android从ImageView取出图片bitmap注意事项](https://blog.csdn.net/u013933272/article/details/50987092)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Android学习 | 10.使用位图工具Bitmap在存储卡上读写图片文件](https://blog.csdn.net/M_Nobody/article/details/126141636)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值