zoukankan      html  css  js  c++  java
  • 关于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实现的,详情待补。

  • 相关阅读:
    C++ 使用老牌库xzip & unzip对文件进行压缩解压
    第一次玩蛇,有点紧张。
    fiddler 抓取手机http/https包
    disk或者Partition镜像的制作
    VS2013+phread.h环境配置
    C++ 浅谈 strlen 与 sizeof的区别
    Qt 显示网页的控件
    Qt error: C2236: 意外的标记“class”。是否忘记了“;”?
    初识MySQL——人生若如初相逢
    【学习笔记】HTML基础:列表、表格与媒体元素
  • 原文地址:https://www.cnblogs.com/wzc0066/p/2948173.html
Copyright © 2011-2022 走看看