异步绘制图片圆角效果

创建一个UIImage的分类:

//.h文件

#import <UIKit/UIKit.h>

@interface UIImage (Extension)

/// 根据当前图像,和指定的尺寸,生成圆角图像并且返回

- (void)mx_cornerImageWithSize:(CGSize)size fillColor:(UIColor *)fillColor completion:(void (^)(UIImage *image))completion;

@end

//.m文件

#import "UIImage+Extension.h"

@implementation UIImage (Extension)

如何回调:block - iOS 开发中,block最多的用途就是在异步执行完成之后,通过参数回调通知调用方结果!

- (void)mx_cornerImageWithSize:(CGSize)size fillColor:(UIColor *)fillColor completion:(void (^)(UIImage *))completion {

dispatch_async(dispatch_get_global_queue(0, 0), ^{

// 1. 利用绘图,建立上下文

UIGraphicsBeginImageContextWithOptions(size, YES, 0);

CGRect rect = CGRectMake(0, 0, size.width, size.height);

// 2. 设置填充颜色

[fillColor setFill];

UIRectFill(rect);

// 3. 利用 贝赛尔路径 `裁切 效果

UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:rect];

[path addClip];

// 4. 绘制图像

[self drawInRect:rect];

// 5. 取得结果

UIImage *result = UIGraphicsGetImageFromCurrentImageContext();

// 6. 关闭上下文

UIGraphicsEndImageContext();

// 7. 完成回调

dispatch_async(dispatch_get_main_queue(), ^{

if (completion != nil) {

completion(result);

}

});

});

}

@end

时间: 2024-08-04 08:54:46

异步绘制图片圆角效果的相关文章

图片圆角效果

public static Bitmap getRoundCornerImage(Bitmap bitmap, int roundPixels) { //创建一个和原始图片一样大小位图 Bitmap roundConcerImage = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888); //创建带有位图roundConcerImage的画布 Canvas canvas = new Canva

Android图片圆角效果

一般来说图片加圆角可以使用 Java 的方式来进行, 对图片略加处理即可, 但也可以使用纯XML+Nice-Patch图片来进行, 这样的速度会更快. 如果背景是纯色的情况下建议使用此方法. 原理则是利用frameLayout在图片上加一个遮盖图片, 从而达到圆角效果. 背景图片: 一张中间透明, 四个边角带有颜色的遮盖图片即可, 可以使用ps画一个带圆角的矩形, 然后反选并填充边角颜色即可. Layout文件:01 02<framelayout< p=""> <

自定义ImageView实现图片圆角效果

效果图如下 代码 package activity.yyzy.com.schoolsecondhand.myview; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapShader; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.M

div css3 border-radius 之圆角 DIV圆角 图片圆角

CSS3之border-radius圆角 DIV盒子圆角 图片圆角,CSS3样式实现盒子对象圆角.图片圆角效果.div css3 border-radius圆角样式教程篇.一.css3单词与语法结构 - TOP(体感音乐床垫) 1.DIVCSS3圆角单词:border-radius 2.语法结构 div{border-radius:5px} 设置DIV对象盒子四个角5像素圆角效果 div{border-radius:5px 0;} 设置DIV对象盒子左上角和右下角5px圆角,其它两个角为0不圆角

Android 使用Universal Image Loader绘制带圆角的图片(一)

Android 使用Universal Image Loader绘制带圆角的图片(一) 绘制带圆角的控件难吗?貌似不难.对于一个普通layout或者widget,要绘制圆角,只要把 background设置成下面这样的drawable就行了. <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/and

二维码图片生成(扩展知识:创建带圆角效果的图片)

效果如下: ViewController.h 1 #import <UIKit/UIKit.h> 2 @interface ViewController : UIViewController 3 @property (strong, nonatomic) IBOutlet UIImageView *imgVQRCode; 4 5 @end ViewController.m 1 #import "ViewController.h" 2 #import "KMQRCo

Android 完美实现图片圆角和圆形(对实现进行分析)

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24555655 本来想在网上找个圆角的样例看一看,不尽人意啊,基本都是官方的Demo的那张原理图.稍后会贴出. 于是自己自己定义了个View,实现图片的圆角以及圆形效果.效果图: 第一个是原图,第二个是圆形效果.第三第四设置了不同的圆角大小. 准备改变一个博客的风格,首先给大家讲一下原理,让大家明确了,然后再贴代码,不然能够直接看那么长的代码也比較痛苦.核心代码事实上就那么几行:

Android 完美实现图片圆角和圆形

本来想在网上找个圆角的例子看一看,不尽人意啊,基本都是官方的Demo的那张原理图,稍后会贴出.于是自己自定义了个View,实现图片的圆角以及圆形效果.效果图: 好了,原理和核心代码解释完成.下面开始写自定义View. 1.自定义属性: 第一个是原图,第二个是圆形效果,第三第四设置了不同的圆角大小. 准备改变一个博客的风格,首先给大家讲一下原理,让大家明白了,然后再贴代码,不然可以直接看那么长的代码也比较痛苦,核心代码其实就那么几行: 核心代码分析: /** * 绘制 */ @Override p

iOS 高效添加圆角效果实战讲解

圆角(RounderCorner)是一种很常见的视图效果,相比于直角,它更加柔和优美,易于接受.但很多人并不清楚如何设置圆角的正确方式和原理.设置圆角会带来一定的性能损耗,如何提高性能是另一个需要重点讨论的话题.我查阅了一些现有的资料,收获良多的同时也发现了一些误导人错误.本文总结整理了一些知识点,概括如下: 设置圆角的正确姿势及其原理 设置圆角的性能损耗 其他设置圆角的方法,以及最优选择 我为本文制作了一个 demo,读者可以在我的 github 上 clone 下来:CornerRadius