zoukankan      html  css  js  c++  java
  • Bitmap处理

    Android中处理图像是一件很常见的事情,这里记录备忘一些亲身使用过的处理图片数据的方法。

    转为Bitmap

    RGB值转Bitmap

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    private Bitmap createColorBitmap(String rgb, int width, int height) {
          Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
          int color = Color.parseColor(rgb);
          bmp.eraseColor(color);
          return bmp;
    }
    
    //Usage
    Bitmap bmp = createColorBitmap("#cce8cf", 200, 50);
    

    Color值转Bitmap

    1
    2
    3
    4
    5
    6
    7
    
    private Bitmap createColorBitmap(int color, int width, int height) {
      Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
      bmp.eraseColor(color);
      return bmp;
    }
    //Usage
    Bitmap bmp = createColorBitmap(Color.BLUE, 200, 50);
    

    字节数组转Bitmap

    1
    2
    3
    
    private Bitmap getBitmapFromByteArray(byte[] array) {
      return BitmapFactory.decodeByteArray(array, 0, array.length);
    }
    

    读取文件转Bitmap

    1
    2
    3
    
    private Bitmap getBitmapFromFile(String pathName) {
          return BitmapFactory.decodeFile(pathName);
    }
    

    读取资源转Bitmap

    1
    2
    3
    
    private Bitmap getBitmapFromResource(Resources res, int resId) {
          return BitmapFactory.decodeResource(res, resId);
      }
    

    输入流转Bitmap

    1
    2
    3
    
    private Bitmap getBitmapFromStream(InputStream inputStream) {
          return BitmapFactory.decodeStream(inputStream);
    }
    

    Drawable转Bitmap

    1
    
    Bitmap icon = BitmapFactory.decodeResource(context.getResources(),R.drawable.icon_resource);
    

    转为Drawable

    资源转Drawable

    1
    
    Drawable drawable = getResources().getDrawable(R.drawable.ic_launcher);
    

    Bitmap转Drawable

    1
    
    Drawable d = new BitmapDrawable(getResources(),bitmap);
    

    图片圆角展示

    通过对图片数据bitmap进行处理即可,其中pixels为边角的半径。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, int pixels) {
            Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap
                    .getHeight(), Config.ARGB_8888);
            Canvas canvas = new Canvas(output);
    
            final int color = 0xff424242;
            final Paint paint = new Paint();
            final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
            final RectF rectF = new RectF(rect);
            final float roundPx = pixels;
    
            paint.setAntiAlias(true);
            canvas.drawARGB(0, 0, 0, 0);
            paint.setColor(color);
            canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
    
            paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
            canvas.drawBitmap(bitmap, rect, rect, paint);
    
            return output;
        }
    

     

  • 相关阅读:
    Codeforces 912E
    Codeforces 912D
    洛谷P4980 【模板】Polya定理
    51nod1222最小公倍数计数
    15 Puzzle LightOJ
    loj2734「JOISC 2016 Day 2」女装大佬 || 洛谷P3615 如厕计划
    Jongmah Codeforces
    洛谷P4238【模板】多项式求逆
    洛谷P4721 【模板】分治 FFT
    FFT,NTT
  • 原文地址:https://www.cnblogs.com/pbq-dream/p/5373182.html
Copyright © 2011-2022 走看看