使用UIGraphics实现多张图片的合并

9 篇文章 0 订阅

如何实现一张图片呈现多张图片?你可以把里边的任何一张照片旋转,颠倒……但是原理不变。

本代码转载自:http://blog.csdn.net/qq350116542/article/details/50413239

// 1.把多张绘制成一张图片

    func drawImages(imageArray: [UIImage]) -> UIImage {

        // 1.1.图片的宽度

        var width: CGFloat = 0

        // 1.2.图片的高度

        var height: CGFloat = 0

        

        // 1.3.遍历图片数组里的所有图片

        for image in imageArray {

            // 1.3.1.获取每一张图片的宽度

            width = (image.size.width > width) ? image.size.width : width

            // 1.3.2.获取每一张图片的高度, 并且相加

            height += image.size.height

        }

        

        // 1.4.开始绘制图片的大小

        UIGraphicsBeginImageContext(CGSize(width: width, height: height))

        

        // 1.5.设置一个变量用来获取UIImageY

        var imageY: CGFloat = 0

        

        // 1.6.遍历图片的数组

        for image in imageArray {

            // 1.6.1.开始绘画图片

            image.draw(at: CGPoint(x: 0, y: imageY))

            // 1.6.2.自增每张图片的Y

            imageY += image.size.height

        }

        

        // 1.7.获取已经绘制好的图片

        let drawImage = UIGraphicsGetImageFromCurrentImageContext()

        

        // 1.8.结束绘制图片

        UIGraphicsEndImageContext()

        

        // 1.9.返回已经绘制的图片

        return drawImage!

    }

    

    // 1.把两张图片绘制成一张图片

    func combine(leftImage: UIImage, rightImage: UIImage) -> UIImage {

        

        // 1.1.获取第一张图片的宽度

        let width = leftImage.size.width

        // 1.2.获取第一张图片的高度

        let height = leftImage.size.height + rightImage.size.height

        

        // 1.3.开始绘制图片的大小

        UIGraphicsBeginImageContext(CGSize(width: width, height: height))

        // 1.4.绘制第一张图片的起始点

        leftImage.draw(at: CGPoint(x: 0, y: 0))

        // 1.5.绘制第二章图片的起始点

        rightImage.draw(at: CGPoint(x: 0, y: leftImage.size.height + 5))

        

        // 1.6.获取已经绘制好的

        let imageLong = UIGraphicsGetImageFromCurrentImageContext()

        // 1.7.结束绘制

        UIGraphicsEndImageContext()

        

        // 1.8.返回已经绘制好的图片

        return imageLong!

    }


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值