博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 将图片的四角圆化 与 剪裁圆形图片
阅读量:6244 次
发布时间:2019-06-22

本文共 3803 字,大约阅读时间需要 12 分钟。

hot3.png

/**     * 将图片的四角圆化     * @param bitmap 原图     * @param roundPixels 圆滑率     * @param half 是否截取半截     * @return     */    public static Bitmap getRoundCornerImage(Bitmap bitmap, int roundPixels,int half)    {    	int width=bitmap.getWidth();    	int height=bitmap.getHeight();    	        //创建一个和原始图片一样大小位图        Bitmap roundConcerImage = Bitmap.createBitmap(width,height, Config.ARGB_8888);        //创建带有位图roundConcerImage的画布        Canvas canvas = new Canvas(roundConcerImage);        //创建画笔        Paint paint = new Paint();        //创建一个和原始图片一样大小的矩形        Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());        RectF rectF = new RectF(rect);        // 去锯齿        paint.setAntiAlias(true);                        //画一个和原始图片一样大小的圆角矩形        canvas.drawRoundRect(rectF, roundPixels, roundPixels , paint);        //设置相交模式        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));        //把图片画到矩形去        canvas.drawBitmap(bitmap, null, rect, paint);        switch(half){        	case HalfType.LEFT:        		return Bitmap.createBitmap(roundConcerImage, 0, 0, width/2, height);        	case HalfType.RIGHT:        		return Bitmap.createBitmap(roundConcerImage, width/2, 0, width/2, height);        	case HalfType.TOP:        		return Bitmap.createBitmap(roundConcerImage, 0, 0, width, height/2);        	case HalfType.BOTTOM:        		return Bitmap.createBitmap(roundConcerImage, 0, height/2, width, height/2);        	case HalfType.NONE:        		return roundConcerImage;        	default:        		return roundConcerImage;        }    }

剪裁圆形图片

        /**         * 转换图片成圆形         * @param bitmap 传入Bitmap对象         * @return         */        public Bitmap toRoundBitmap(Bitmap bitmap) {                int width = bitmap.getWidth();                int height = bitmap.getHeight();                float roundPx;                float left,top,right,bottom,dst_left,dst_top,dst_right,dst_bottom;                if (width <= height) {                        roundPx = width / 2;                        top = 0;                        bottom = width;                        left = 0;                        right = width;                        height = width;                        dst_left = 0;                        dst_top = 0;                        dst_right = width;                        dst_bottom = width;                } else {                        roundPx = height / 2;                        float clip = (width - height) / 2;                        left = clip;                        right = width - clip;                        top = 0;                        bottom = height;                        width = height;                        dst_left = 0;                        dst_top = 0;                        dst_right = height;                        dst_bottom = height;                }                                 Bitmap output = Bitmap.createBitmap(width,                                height, Config.ARGB_8888);                Canvas canvas = new Canvas(output);                                 final int color = 0xff424242;                final Paint paint = new Paint();                final Rect src = new Rect((int)left, (int)top, (int)right, (int)bottom);                final Rect dst = new Rect((int)dst_left, (int)dst_top, (int)dst_right, (int)dst_bottom);                final RectF rectF = new RectF(dst);                 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, src, dst, paint);                return output;        }

转载于:https://my.oschina.net/zhulunjun/blog/200843

你可能感兴趣的文章
[LeetCode] Meeting Rooms
查看>>
Python——eventlet.event
查看>>
sas函数
查看>>
BZOJ2654 & 洛谷2619:tree——题解
查看>>
BZOJ3571 & 洛谷3236:[HNOI2014]画框——题解
查看>>
BZOJ4104:[Thu Summer Camp 2015]解密运算——题解
查看>>
BZOJ2821:作诗——题解
查看>>
2019中国爱分析数据智能高峰论坛(北京)
查看>>
oracle数据库安装的注意事项
查看>>
【总结整理】微信7年起起伏伏的理解
查看>>
Javascript多线程引擎(九)
查看>>
Handler和AsyncTask
查看>>
Microbit Turnipbit 孩子也能做的声光控开关
查看>>
通过SHELL并发获下载数据
查看>>
web安全之SQL注入---第三章 如何寻找sql注入?
查看>>
JAVA通过继承Thread来创建线程
查看>>
C#控制台"*"绘制空心菱形
查看>>
Android中JNI编程详解
查看>>
演练Ext JS 4.2自定义主题
查看>>
【tensorflow】1.安装Tensorflow开发环境,安装Python 的IDE--PyCharm
查看>>