Divide image in array of images with swift

前端 未结 3 1445
迷失自我
迷失自我 2021-01-03 02:33

I\'m trying to divide an image to create 16 out of it (in a matrix). I\'m using swift 2.1. Here\'s the code:

let cellSize = Int(originalImage.size.height) /          


        
3条回答
  •  爱一瞬间的悲伤
    2021-01-03 03:17

    I've used this to slice an image into a matrix. The matrix is represented as a 1D array.

    func snapshotImage(image: UIImage, rect: CGRect) -> UIImage {
            var imageRect: CGRect! = rect
    
            if image.scale > 1.0 {
                imageRect = CGRect(origin: CGPoint(x: rect.origin.x * image.scale, y: rect.origin.y * image.scale), size: CGSize(width: rect.size.width * image.scale, height: rect.size.height * image.scale))
            }
    
    
            let imageRef: CGImage = image.cgImage!.cropping(to: imageRect)!
            let result: UIImage = UIImage(cgImage: imageRef, scale: image.scale, orientation: image.imageOrientation)
            return result
        }
    
        func sliceImage(image: UIImage, size: CGSize) -> [UIImage] {
            var slices: [UIImage] = [UIImage]()
            var rect = CGRect(x: 0.0, y: 0.0, width: size.width, height: size.height)
    
    
            var y: Float = 0.0
            let width: Int = Int(image.size.width / size.width)
            let height: Int = Int(image.size.height / size.height)
    
            for _ in 0...height {
                var x: Float = 0.0
    
                for _ in 0...width {
                    rect.origin.x = CGFloat(x);
                    slices.append(self.snapshotImage(image: image, rect: rect))
    
                    x += Float(size.width)
                }
    
                y += Float(size.height)
                rect.origin.y = CGFloat(y)
            }
    
            return slices
        }
    

提交回复
热议问题