美文网首页iOS开发实用技术iOS技术分享程序员
iOS开发-保存View为高清图片到相册

iOS开发-保存View为高清图片到相册

作者: it_hao528 | 来源:发表于2017-08-22 15:08 被阅读144次
    asdfg.jpg
    前言:今天给大家介绍一个比较实用的小功能--保存View为高清图片到相册,可能有些朋友已经知道怎么做的,但还是有大部分不知道的朋友。

    首先,给大家说一下一般的保存View为图片到相册

        // 设置绘制图片的大小
        UIGraphicsBeginImageContext(_saveView.bounds.size);
        // 绘制图片
        [_saveView.layer renderInContext:UIGraphicsGetCurrentContext()];
        UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        // 保存图片到相册   如果需要获取保存成功的事件第二和第三个参数需要设置响应对象和方法,该方法为固定格式。
        UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
    

    这样的方法虽然可以快速实现,但是保存的图片比较模糊,清晰度不够高。

    下面是保存View为高清图片到相册

        // 设置绘制图片的大小
        UIGraphicsBeginImageContextWithOptions(_saveView.bounds.size, NO, 0.0);
        // 绘制图片
        [_saveView.layer renderInContext:UIGraphicsGetCurrentContext()];
        UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        // 保存图片到相册   如果需要获取保存成功的事件第二和第三个参数需要设置响应对象和方法,该方法为固定格式。
        UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
    

    大家可以看到,只是换了一个绘制图片的方法,多了两个参数。其中第二个参数表示是否是非透明的。如果需要显示半透明效果,需要传NO,否则传YES。不过我所尝试了YES和NO所出来的效果没什么区别,第三个参数就是屏幕密度了,关键就是第三个参数 [UIScreen mainScreen].scale。此方法所保存的图片的清晰度确实有了很大的提高。

    保存图片成功调用的方法

    - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {
        
        if (error) {
            // 保存失败
        } else {
            // 保存成功
        }
    }
    

    注意:由于是保存图片到相册,所以是要访问系统相册的,所以需要在info.plist文件中里边添加字段:Privacy - Photo Library Usage Description

    最后,希望能够帮到有需要的朋友们,愿我们能够一起学习进步,在开发的道路上越走越顺利!

    相关文章

      网友评论

        本文标题:iOS开发-保存View为高清图片到相册

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