美文网首页android使用
bitmap图片圆角设置

bitmap图片圆角设置

作者: 合拍v | 来源:发表于2020-12-02 17:51 被阅读0次

     设置圆角的图片可以搜到很多方法,比如说自定义一个View,但是在某些情况下不太好使。桌面组件设置图片只能使用原生的ImageView,并且提供的方法非常少,最终还是创建圆角的Bitmap,再绘制到ImageView上。

    Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), id);
        if (bitmap == null) {
          return null;
        }
        Bitmap output = null;
        try {
          output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
        } catch (OutOfMemoryError error) {
          try {
            output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.RGB_565);
          } catch (OutOfMemoryError e) {
            return null;
          }
        }
        Canvas canvas = new Canvas(output);
        final Paint paint = new Paint();
        paint.setAntiAlias(true);
        final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
        final RectF rectF = new RectF(rect);
        canvas.drawRoundRect(rectF, cornerRadius, cornerRadius, paint);
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
        canvas.drawBitmap(bitmap, rect, rect, paint);
        return output;
    

     可以通过上面的方法获得我们想要的圆角图片,将本地的图片转换为Bitmap,再画一个圆角的Rect,到最后…过程很简单。比较重要的函数就是canvas.drawRoundRect paint.setXfermode
     但是这时候如果只想设置某个角圆角怎么办,drawRoundRect这个函数并不支持呀。还需要把不想要的角画出来,实际操作如下:

    canvas.drawRoundRect(rectF, cornerRadius, cornerRadius, paint);
       // bitmap是上面的图片,不想要圆角的部分再画上即可
       //下面对应取消左下角圆角
       canvas.drawRect(new Rect(0, bitmap.getHeight() - cornerRadius, 
                       cornerRadius, bitmap.getHeight()), paint);
    
    image.png

    相关文章

      网友评论

        本文标题:bitmap图片圆角设置

        本文链接:https://www.haomeiwen.com/subject/zkjuwktx.html