完美解决scrollView 截屏图片模糊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了完美解决scrollView 截屏图片模糊相关的知识,希望对你有一定的参考价值。

UIGraphicsBeginImageContext

 

首先说明一下UIGraphicsBeginImageContextWithOptions 和UIGraphicsBeginImageContext区别:

 

 

1: UIGraphicsBeginImageContext(CGSize size)

参数size为新创建的位图上下文的大小。它同时是由UIGraphicsGetImageFromCurrentImageContext函数返回的图形大小。

该函数的功能同UIGraphicsBeginImageContextWithOptions的功能相同,相当与UIGraphicsBeginImageContextWithOptions的opaque参数为NO,scale因子为1.0

 

 

2 UIGraphicsBeginImageContextWithOptions

 

函数原型为:

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

size——同UIGraphicsBeginImageContext

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

scale—–缩放因子

特别说明,当缩放因子为0.0时候,图片不模糊

//截屏

- (UIImage *)CaptureScrollView:(UIScrollView *)scrollView{

    UIImage* image = nil;

//    UIGraphicsBeginImageContext(scrollView.contentSize);  默认

 

    UIGraphicsBeginImageContextWithOptions(scrollView.contentSize, NO, 0.0);

    {

        CGPoint savedContentOffset = scrollView.contentOffset;

        CGRect savedFrame = scrollView.frame;

        scrollView.contentOffset = CGPointZero;

        scrollView.frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height);

        

        [scrollView.layer renderInContext: UIGraphicsGetCurrentContext()];

        image = UIGraphicsGetImageFromCurrentImageContext();

        

        scrollView.contentOffset = savedContentOffset;

        scrollView.frame = savedFrame;

    }

    UIGraphicsEndImageContext();

    

    if (image != nil) {

        return image;

    }

    return nil;

}

 

以上是关于完美解决scrollView 截屏图片模糊的主要内容,如果未能解决你的问题,请参考以下文章

手机为啥截屏总是模糊的呢?

Unity3D中UI图片模糊,不清晰解决怎么解决

Unity3D中UI图片模糊,不清晰解决如何解决

WPF_界面_图片模糊解决之道整理

ios 代码截屏模糊问题解决办法

canvas模糊解决