zoukankan      html  css  js  c++  java
  • 把图片转换成圆形图片

    调用:(bt是Bitmap)

    head_portrait.setImageBitmap(ToRoundBitmap.toRoundBitmap(bt));

    转换圆形的方法:

     1 package com.ghp.tools;
     2 
     3 import android.graphics.Bitmap;
     4 import android.graphics.Canvas;
     5 import android.graphics.Color;
     6 import android.graphics.Paint;
     7 import android.graphics.PorterDuffXfermode;
     8 import android.graphics.Rect;
     9 import android.graphics.Bitmap.Config;
    10 
    11 public class ToRoundBitmap {
    12     /**
    13      * 转成圆形图片
    14      * 
    15      * @param bitmap
    16      * @return
    17      */
    18     public static Bitmap toRoundBitmap(Bitmap bitmap) {
    19         int width = bitmap.getWidth();
    20         int height = bitmap.getHeight();
    21 
    22         final int color = Color.parseColor("#00FF00");
    23         // defaultWidth = width;
    24         // defaultHeight = height;
    25 
    26         float roundPx;
    27         float left, top, right, bottom, dst_left, dst_top, dst_right, dst_bottom;
    28         if (width <= height) { // 高大于宽
    29             roundPx = width / 2;
    30             left = 0;
    31             top = 0;
    32             right = width;
    33             bottom = width;
    34             height = width;
    35             dst_left = 0;
    36             dst_top = 0;
    37             dst_right = width;
    38             dst_bottom = width;
    39         } else { // 宽大于高
    40             roundPx = height / 2;
    41             float clip = (width - height) / 2;
    42             left = clip;
    43             right = width - clip;
    44             top = 0;
    45             bottom = height;
    46             width = height;
    47             dst_left = 0;
    48             dst_top = 0;
    49             dst_right = height;
    50             dst_bottom = height;
    51         }
    52 
    53         Bitmap output = Bitmap.createBitmap(width, height, Config.ARGB_8888);
    54         Canvas canvas = new Canvas(output);
    55 
    56         final Paint paint = new Paint();
    57         paint.setAntiAlias(true);// 设置画笔无锯齿
    58 
    59         final Rect src = new Rect((int) left, (int) top, (int) right,
    60                 (int) bottom);
    61         final Rect dst = new Rect((int) dst_left, (int) dst_top,
    62                 (int) dst_right, (int) dst_bottom);
    63         canvas.drawARGB(0, 0, 0, 0); // 填充整个Canvas
    64         paint.setColor(color);
    65         paint.setDither(true);
    66 
    67         canvas.drawCircle(roundPx, roundPx, roundPx, paint);// 画圆
    68         paint.setXfermode(new PorterDuffXfermode(
    69                 android.graphics.PorterDuff.Mode.SRC_IN));
    70         canvas.drawBitmap(bitmap, src, dst, paint); // 以Mode.SRC_IN模式合并bitmap和已经draw了的Circle
    71 
    72         return output;
    73     }
    74 }
  • 相关阅读:
    C复制字符串
    C语言分解数组
    perlCGI编程之测试环境
    linux下c语言 读取文件
    C++的组合(Composite)模式
    C#GDI+绘制多行文本和格式化文本
    shell中引号的应用
    perlCGI编程之Apache服务器安装配置
    求二叉树的深度
    perlCGI编程之页面参数传递
  • 原文地址:https://www.cnblogs.com/jiuqing/p/4018731.html
Copyright © 2011-2022 走看看