参数size为新创建的位图上下文的大大小小,此时拿走的上下文就是咱们和好成立的图样上下文了

demo1:依据颜色生成一张图纸

static func colorImage( size : CGSize, color : UIColor ) -> UIImage {

        //  开启一个图形上下文
        UIGraphicsBeginImageContext(size)

        //  获取到这个上下文
        let context = UIGraphicsGetCurrentContext()

        //  设置颜色
        context?.setFillColor(color.cgColor)

        //  绘制
        context?.fill(CGRect(x: 0, y: 0, width: size.width, height: size.height))

        //  获取到这张图片
        let image = UIGraphicsGetImageFromCurrentImageContext()

        //  关闭
        UIGraphicsEndImageContext()

        return image!
    }

UIGraphicsBeginImageContext 和 UIGraphicsBeginImageContextWithOptions

UIGraphicsBeginImageContext:创立三个依照位图的上下文(context),并将其设置为眼下上下文(context)。方法证明如下:void
UIGraphicsBeginImageContext(CGSize size);

参数size为新创立的位图上下文的轻重缓急。它同时是由UIGraphicsGetImageFromCurrentImageContext函数返回的图纸大小。

该函数的功能同UIGraphicsBeginImageContextWithOptions的功用雷同,非常与UIGraphicsBeginImageContextWithOptions的opaque参数为NO,scale因子为1.0。

UIGraphicsBeginImageContextWithOptions

函数原型为:void UIGraphicsBeginImageContextWithOptions(CGSize size,
BOOL opaque, CGFloat scale);  

size——同UIGraphicsBeginImageContext

opaque—透明开关,假诺图形完全不用透明,设置为YES以优化位图的积存。

scale—–缩放因子索爱 4是2.0,别的是1.0。即使那里能够用[UIScreen
mainScreen].scale来获得,但实际设为0后,系统就会自行安装科学的百分比了。

UIImage*image = [UIImageimageNamed:select ==YES?@”sel”:@”nor”];

CGSize size =CGSizeMake(font+2,font+2);

UIGraphicsBeginImageContextWithOptions(size,false,0);

[image drawInRect:CGRectMake(0,2,17,17)];

UIImage *resizeImage =UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

别的: 要是你也正好喜欢看课外书 , 欢迎关切本身的微信公众号LDYG2017, 
那里会波动时分享小编的读书笔记, 愿你作者联合进步.

图片 1

UIGraphicsBeginImageContext

首先,先来认识一个UIGraphicsBeginImageContext,它会创立1个基于位图的上下文(context)(私下认可创立3个透明的位图上下文),并将其设置为当下上下文。

位图图形上下文UIKit是不会承担创造的,所以须求用户手动创立,并且需求在运用完成后关门它。在行使UIKit中系统创设的图片上下文的时候,大家只可以在drawRect:方法中选择,由于位图图形上下文是由大家手动成立的,所以能够放置任何措施中调用,其它,那个法子并从未重临值,假如我们要获取大家创制的图纸上下文只须要在开立上下文之后、关闭在此之前调用UIGraphicsGetCurrentContext()方法,此时收获的上下文便是大家和好创办的图片上下文了。

情势注脚如下:

void UIGraphicsBeginImageContext(CGSize size);

参数size为新创设的位图上下文的分寸。它同时是由UIGraphicsGetImageFromCurrentImageContext函数重返的图片的深浅。该函数的作用通UIGraphicsBeginImageContextWithOptions的效用雷同,约等于UIGraphicsBeginImageContextWithOptions的opaque的参数为NO,scale因子为1.0.

方法评释如下:

void UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale);

size:同UIGraphicsBeginImageContext

opaque:透明开关,假若图形完全分化透明,设置为YES以优化位图的仓库储存。

scale:缩放因子。 


demo3:依据view生成图片

//  根据view生成图片
    static func viewImage(view : UIView) -> UIImage {

        //  开启一个图形上下文
        UIGraphicsBeginImageContext(view.frame.size)

        //  获取到这个上下文
        let context = UIGraphicsGetCurrentContext()

     // 渲染内容到上下文
        view.layer.render(in: context!)

        //  获取到这张图片
        let image = UIGraphicsGetImageFromCurrentImageContext()

        //  关闭
        UIGraphicsEndImageContext()

        return image!

    }

demo4:直接将图片切割圆角

//  切割图片生成圆角
    func cicleImage() -> UIImage {
        //  开启一个图形上下文
        UIGraphicsBeginImageContext(size)

        //  获取到这个上下文
        let context = UIGraphicsGetCurrentContext()

        //  设置圆形
        context?.addEllipse(in: CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height))

        //  裁剪
        context?.clip()

        //  重新绘制
        self.draw(in: CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height))

        //  获取到这张图片
        let image = UIGraphicsGetImageFromCurrentImageContext()

        //  关闭
        UIGraphicsEndImageContext()

        return image!

    }

  

 

demo2:获取荧屏截图

//  获取屏幕的截图
    static func screenImage() -> UIImage {

        //  获取到window
        let window = UIApplication.shared.delegate?.window as? UIWindow

        //  开启一个图形上下文
        UIGraphicsBeginImageContext(UIScreen.main.bounds.size)

        //  系统截屏方法
        window?.drawHierarchy(in: UIScreen.main.bounds, afterScreenUpdates: true)

        //  获取到这张图片
        let image = UIGraphicsGetImageFromCurrentImageContext()

        //  关闭
        UIGraphicsEndImageContext()

        return image!

    }
网站地图xml地图