34.UIImage — 把多张图片合成一张图

在平常我们开发的时候, 我们会遇到各种各样的需求, 比如想微博那样, 把多张图片合成一张长图, 现在让我们来看看怎么把多张图片合成一张长图.


1.布置界面

1

2

3


2.实现代码一(绘制多张图片)

// 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.设置一个变量用来获取UIImage的Y值
    var imageY: CGFloat = 0

    // 1.6.遍历图片的数组
    for image in imageArray {
        // 1.6.1.开始绘画图片
        image.drawAtPoint(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
}

3.实现代码二(合成两张图片)

// 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.drawAtPoint(CGPoint(x: 0, y: 0))
    // 1.5.绘制第二章图片的起始点
    rightImage.drawAtPoint(CGPoint(x: 0, y: leftImage.size.height + 5))

    // 1.6.获取已经绘制好的
    let imageLong = UIGraphicsGetImageFromCurrentImageContext()
    // 1.7.结束绘制
    UIGraphicsEndImageContext()

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

4.最终效果

0


项目地址:http://pan.baidu.com/s/1hr1iVze 密码:voy6

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值