• 关于Bitmap的使用小结


    创建bitmap:

    Bitmap bm = null;
    bm = Bitmap.createBitmap(w, h, Config.ALPHA_8); //每个像素占一个字节(8位)
    bm = Bitmap.createBitmap(w, h, Config.ARGB_4444); //两个字节
    bm = Bitmap.createBitmap(w, h, Config.ARGB_8888); //四个字节
    bm = BitmapFactory.decodeFile(path); //从文件加载成bitmap,如/sdcard/logo.png
    bm = BitmapFactory.decodeResource(getResources(), R.drawable.test); //R.drawable.test指的是/res/drawable-*/test.jpg或png等等
    bm = ((BitmapDrawable)getResources().getDrawable(R.drawable.show)).getBitmap(); //未测试

    截取bitmap:

    Bitmap sbm = Bitmap.createBitmap(this.bm, 0, 0, w, h); //表示从(0,0)处开始截取宽为w,高为h的范围

    拉伸bitmap:

    DisplayMetrics dm = getResources().getDisplayMetrics();   
    int mScreenWidth = dm.widthPixels; //获取屏幕宽
    int mScreenHeight = dm.heightPixels; //获取屏幕长度
    Bitmap lbm = Bitmap.createScaledBitmap(this.bm, mScreenWidth, mScreenHeight, true);

    每次 createBitmap ,都会分配新的内存,带来资源的消耗,所以用 Bitmap 的 createBitmap 虽然简单方便,但是不是最优方法。介绍一个比较好点的方法,不用创建新的 Bitmap ,用 Canvas 在画的时候直接缩放或者剪切。

    canvas.drawBitmap(this.bm, null, new Rect(0, 0, 200, 200), null);

    这里的 Rect 对象表示一个矩形区域,从 (0,0) 到 (200,200) 之间的矩形区域。这段代码将把this.bm缩放并绘制到屏幕上的 (0,0) 到 (200,200) 之间的区域。

    canvas.drawBitmap(this.bm, new Rect(100, 100, 300, 300), new Rect(100, 100, 200, 200), null);

    这里将this.bm的 (100,100) 到 (300,300) 区域拿出来,自动缩放并画到屏幕的 (100,100) 到 (200,200) 区域。

    还可以通过matrix缩放:

    Matrix matrix = new Matrix();
    matrix.postScale(1.0f, 1.0f); //这里宽和高都是1倍,等于没缩放
    Bitmap newbtm = Bitmap.createBitmap(btm, 0, 0, this.btm.getWidth(), this.btm.getHeight(), matrix, true);

    旋转bitmap:
    也是通过maxtrix实现的,详情待补。

  • 相关阅读:
    团队项目-第一阶段冲刺7
    团队项目-第一阶段冲刺6
    Spring Boot 揭秘与实战(七) 实用技术篇
    Spring Boot 揭秘与实战(七) 实用技术篇
    Spring Boot 揭秘与实战(六) 消息队列篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(四) 配置文件篇
  • 原文地址:https://www.cnblogs.com/wzc0066/p/2948173.html
Copyright © 2020-2023  润新知