Android中获取圆角图片和圆形图片的三种方式
2017-12-06 16:56
176 查看
package com.example.test; import android.graphics.Bitmap; import android.graphics.BitmapShader; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Path; import android.graphics.PorterDuffXfermode; import android.graphics.PorterDuff; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.Shader.TileMode; public class Utils { // 获取圆型Bitmap public static Bitmap getCircleBitmap(Bitmap src) { int diameter = Math.min(src.getWidth(), src.getHeight()); Bitmap dst = Bitmap.createBitmap(diameter, diameter, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(dst); Path path = new Path(); path.addCircle(diameter / 2, diameter / 2, diameter / 2, Path.Direction.CW); canvas.clipPath(path); canvas.drawBitmap(src, 0, 0, new Paint()); return dst; } // 获取圆型Bitmap public static Bitmap getCircleBitmap2(Bitmap src) { int diameter = Math.min(src.getWidth(), src.getHeight()); Bitmap dst = Bitmap.createBitmap(diameter, diameter, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(dst); BitmapShader shader = new BitmapShader(src, TileMode.REPEAT, TileMode.REPEAT); Paint paint = new Paint(); paint.setShader(shader); canvas.drawCircle(diameter / 2, diameter / 2, diameter / 2, paint); return dst; } // 获取圆型Bitmap public static Bitmap getCircleBitmap3(Bitmap src) { int diameter = Math.min(src.getWidth(), src.getHeight()); Bitmap dst = Bitmap.createBitmap(diameter, diameter, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(dst); Paint paint = new Paint(); paint.setAntiAlias(true); canvas.drawCircle(diameter / 2, diameter / 2, diameter / 2, paint); PorterDuffXfermode xfermode = new PorterDuffXfermode( PorterDuff.Mode.SRC_IN); paint.setXfermode(xfermode); canvas.drawBitmap(src, 0, 0, paint); return dst; } // 获取圆角矩形Bitmap public static Bitmap getRoundCornerBitmap(Bitmap src, float radius) { Bitmap dst = Bitmap.createBitmap(src.getWidth(), src.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(dst); Path path = new Path(); RectF rect = new RectF(0, 0, src.getWidth(), src.getHeight()); path.addRoundRect(rect, radius, radius, Path.Direction.CW); canvas.clipPath(path); canvas.drawBitmap(src, 0, 0, new Paint()); return dst; } // 获取圆角矩形Bitmap public static Bitmap getRoundCornerBitmap3(Bitmap src, float radius) { Bitmap dst = Bitmap.createBitmap(src.getWidth(), src.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(dst); RectF rect = new RectF(0, 0, dst.getWidth(), dst.getHeight()); BitmapShader shader = new BitmapShader(src, TileMode.REPEAT, TileMode.REPEAT); Paint paint = new Paint(); paint.setShader(shader); canvas.drawRoundRect(rect, radius, radius, paint); return dst; } // 获取圆角矩形Bitmap public static Bitmap getRoundCornerBitmap2(Bitmap bitmap, float pixels) { int width = bitmap.getWidth(); int height = bitmap.getHeight(); Bitmap roundCornerBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(roundCornerBitmap); Paint paint = new Paint(); paint.setAntiAlias(true); Rect rect = new Rect(0, 0, width, height); RectF rectF = new RectF(rect); canvas.drawRoundRect(rectF, pixels, pixels, paint); PorterDuffXfermode xfermode = new PorterDuffXfermode( PorterDuff.Mode.SRC_IN); paint.setXfermode(xfermode); canvas.drawBitmap(bitmap, rect, rect, paint); return roundCornerBitmap; } }
相关文章推荐
- Android Glide加载图片时转换为圆形、圆角、毛玻璃等图片效果
- Android BitmapShader 实战 实现圆形、圆角图片——代码分析
- Android圆角图片和圆形图片实现总结
- Android 三种方式实现圆形ImageView
- Android实现圆形图片的两种方式
- Android图片压缩的三种方式
- Android Picasso实现圆形图片和圆角图片
- Android获得图片资源的三种方式
- Android获取图片资源的方式
- Android获取图片资源的4种方式
- Android Drawable 自定义(圆角图片和圆形图片)
- Android 自定义Drawable 实现圆角圆形图片
- Android BitmapShader 实战 实现圆形、圆角图片
- Android使用BitmapShader图形渲染实现圆形、圆角和椭圆自定义图片View
- android:圆形、圆角图片
- Android三种基本的加载网络图片方式
- Android获取SharedPreferences三种方式
- Android获取图片资源的4种方式
- 超完整!Android获取图片的三种方法
- Android圆形图片和圆角图片的绘制