xcode swift how do I split an image?

前提是你 提交于 2019-12-08 06:22:17

问题


I am working with Swift 2.0 and I would like to split an image into multiple pieces. I know this is a repeat, but they syntax is old and I am having trouble update.


回答1:


update: Xcode 8.2.1 • Swift 3.0.2

You can add this extension to split your images:

extension UIImage {
    var topHalf: UIImage? {
        guard let image = cgImage?
            .cropping(to: CGRect(origin: .zero,
                    size: CGSize(width: size.width,
                                 height: size.height / 2 )))
        else { return nil }
        return UIImage(cgImage: image, scale: 1, orientation: imageOrientation)
    }
    var bottomHalf: UIImage? {
        guard let image = cgImage?
            .cropping(to: CGRect(origin: CGPoint(x: 0,
                                                 y: size.height - (size.height/2).rounded()),
                                 size: CGSize(width: size.width,
                                              height: size.height -
                                                      (size.height/2).rounded())))
        else { return nil }
        return UIImage(cgImage: image)
    }
    var leftHalf: UIImage? {
        guard let image = cgImage?
            .cropping(to: CGRect(origin: .zero,
                                 size: CGSize(width: size.width/2,
                                              height: size.height)))
        else { return nil }
        return UIImage(cgImage: image)
    }
    var rightHalf: UIImage? {
        guard let image = cgImage?
            .cropping(to: CGRect(origin: CGPoint(x: size.width - (size.width/2).rounded(), y: 0),
                                 size: CGSize(width: size.width - (size.width/2).rounded(),
                                              height: size.height)))
        else { return nil }
        return UIImage(cgImage: image)
    }
}

Playground testing:

import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true

let imgURL = URL(string: "https://i.stack.imgur.com/Xs4RX.jpg")!
URLSession.shared.dataTask(with: imgURL) { data, response, error in
    guard
        let data = data, let image = UIImage(data: data)
    else { return }

    let topHalf = image.topHalf
    let bottomHalf = image.bottomHalf

    let topLeft = topHalf?.leftHalf
    let topRight = topHalf?.rightHalf
    let bottomLeft = bottomHalf?.leftHalf
    let bottomRight = bottomHalf?.rightHalf
}.resume()


来源:https://stackoverflow.com/questions/33090812/xcode-swift-how-do-i-split-an-image

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!