登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

图片处理 生成长图 图片拼接 图片擦除

[复制链接]
来自: dudongge 分类: iOS精品源码 上传时间: 2018-5-16 15:25:48
Tag:

项目介绍:

写在前面

此代码已经上传到githup[DDGScreenShot]([https://github.com/dudongge/DDGScreenShot]
当然这只是这个库的功能的一小部分
想看更多功能,可以去github上下载,如果对您有帮助,希望您不吝给个star.
欢迎查看DDGScreenShot)

图片擦除功能,也是运用图片的绘制功能,  
将图片绘制后,拿到相应的图片。当然,有一涨底图更明显  

实现代码如下

/**  
     ** 用手势擦除图片  
     - imageView --传图片  
     - bgView --截图背景  
     */  
    public func clearImage(imageView: UIImageView?, rect: CGRect) -> UIImage? {  
        if imageView == nil {  
            return nil  
        }  
        //开启一个位图上下文  
        UIGraphicsBeginImageContextWithOptions((imageView?.bounds.size)!, false, 0.0)  
        //把ImageView内容渲染到上下文当中  
        let imageCtx = UIGraphicsGetCurrentContext()  
        imageView?.layer.render(in: imageCtx!)  
        //擦除上下文当中某一块区域  
        imageCtx!.clear(rect)  
        //得到新图片  
        let newImage = UIGraphicsGetImageFromCurrentImageContext()  
        //关闭上下文  
        UIGraphicsEndImageContext()  

        return newImage  
    }  

    ### 当然你也可以把图片绘制过程放入子线程中,再次就不列举了  

具体用法

   //底部图片  
    private lazy var bottomImageView: UIImageView = {  
        let imageView = UIImageView()  
        imageView.image = UIImage(named: "image")  
        imageView.frame = CGRect(x: 0, y: 100, width: width, height: width)  
        self.view.addSubview(imageView)  
        imageView.isUserInteractionEnabled = true  
        return imageView  
    }()  
    //要擦除的图片  
    private lazy var clearImageView: UIImageView = {  
        let imageView = UIImageView()  
        imageView.image = UIImage(named: "logo")  
        imageView.frame = CGRect(x: 0, y: 100, width: width, height: width)  
        imageView.isUserInteractionEnabled = true  
        self.view.addSubview(imageView)  
        return imageView  
    }()  
    override func viewDidLoad() {  
        super.viewDidLoad()  
        self.view.backgroundColor = UIColor.white  
        self.bottomImageView.isUserInteractionEnabled = false  
        let pan = UIPanGestureRecognizer(target: self, action: #selector(DDGClearImageView.clearPan(pan:)))  
        self.clearImageView.addGestureRecognizer(pan)  
    }  
    @objc func clearPan(pan: UIPanGestureRecognizer) {  
        //获取当前手指的点  
        let imageView = pan.view as! UIImageView  
        let clearPan = pan.location(in: imageView)  
        //擦除区域的大小  
        let rect = CGRect(x: clearPan.x - 15, y: clearPan.y - 15, width: 30, height: 30)  
        let newImage = DDGManage.share.clearImage(imageView: imageView, rect: rect)  

        imageView.image = newImage  
    }  

### 是不是很好用  

结束语

此代码已经上传到githup[DDGScreenShot]([https://github.com/dudongge/DDGScreenShot](https://github.com/dudongge/DDGScreenShot))  
[link]([https://github.com/dudongge/DDGScreenShot](https://github.com/dudongge/DDGScreenShot))  
当然这只是这个库的功能的一小部分  
想看更多功能,可以去github上下载,如果对您有帮助,希望您不吝给个star.  

欢迎查看DDGScreenShot)

最近总结了关于图片处理相关的内容,之前在二三四五工作的时候,也做过关于这方面的分享,图片的处理内容很多,会分很多模块来讲解。  
今天简单讲多图片的拼接。  

上代码

func composeImageWithLogo( bgImage: UIImage,  
                               imageRect: [CGRect],  
                               images:[UIImage]) -> UIImage {  
        //以bgImage的图大小为底图  
        let imageRef = bgImage.cgImage  
        let w: CGFloat = CGFloat((imageRef?.width)!)  
        let h: CGFloat = CGFloat((imageRef?.height)!)  
        //以1.png的图大小为画布创建上下文  
        UIGraphicsBeginImageContext(CGSize(width: w, height: h))  
        bgImage.draw(in: CGRect(x: 0, y: 0, width: w, height: h))  
        //先把1.png 画到上下文中  
        for i in 0..<images.count {  
            images_.draw(in: CGRect(x: imageRect_.origin.x,  
                                      y: imageRect_.origin.y,  
                                      width: imageRect_.size.width,  
                                      height:imageRect_.size.height))  
        }  
        //再把小图放在上下文中  
        let resultImg: UIImage? = UIGraphicsGetImageFromCurrentImageContext()  
        //从当前上下文中获得最终图片  
        UIGraphicsEndImageContext()  
        return resultImg!  
    }  
上面注释已经很明白了,当然,说图片处理就这么些内容,是不是太少了。空间有限,所注代码不全,我把上述功能整理成了最新的带三方库,  
以后会加上图片的相关处理,比如美颜,剪切,马赛克,组图等,  
附上我的git地址:[github地址]([https://github.com/dudongge/DDGScreenShot](https://github.com/dudongge/DDGScreenShot))  
有什么问题也可以联系我QQ:532835032  
如果对您有帮助,请您不吝star一下,增加我更新的动力  

欢迎查看DDGScreenShot)

相关源码推荐:

我来说两句
*滑动验证:
所有评论(14)
这是个逗比 2018-5-17 09:44:02
相当不错,感谢无私分享精神!
回复
Wsdtg 2018-5-17 09:44:30
不错不错,楼主辛苦了。。。
回复
inta加加 2018-5-17 09:44:55
感谢分享,code4app有你更精彩
回复
ff12345 2018-5-17 09:45:15
感谢大神~
回复
乱世佳人520 2018-5-17 09:45:20
学习...学习...
回复
Yf8546 2018-5-17 09:45:45
感谢分享,code4app有你更精彩
回复
dudongge 2018-5-17 10:49:31
这是个逗比 发表于 2018-5-17 09:44
相当不错,感谢无私分享精神!

如果对您有帮助,GitHub上star一下
回复
dudongge 2018-5-17 10:49:46
Wsdtg 发表于 2018-5-17 09:44
不错不错,楼主辛苦了。。。

如果对您有帮助,GitHub上star一下
回复
dudongge 2018-5-17 10:50:04

如果对您有帮助,GitHub上star一下
回复
12下一页
提取码:  下载次数:4 状态:已购或VIP 售价:0(原价:15)金钱 下载权限:初级码农 
201 0 4
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条

联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表