在Swift中裁剪UIImage的问题

时间:2016-09-03 19:45:22

标签: ios swift uiimage crop

我正在编写一个应用程序,它会拍摄图像并裁剪除图像中心的矩形之外的所有内容。 (SWIFT)我无法让裁剪功能起作用。这就是我现在所拥有的:

func cropImageToBars(image: UIImage) -> UIImage {
     let crop = CGRectMake(0, 200, image.size.width, 50)

     let cgImage = CGImageCreateWithImageInRect(image.CGImage, crop)
     let result: UIImage = UIImage(CGImage: cgImage!, scale: 0, orientation: image.imageOrientation)

     UIImageWriteToSavedPhotosAlbum(result, self, nil, nil)

     return result
  }

我看了很多不同的指南,但似乎没有一个对我有用。有时图像旋转90度,我不知道为什么会这样做。

1 个答案:

答案 0 :(得分:22)

如果您想使用扩展程序,只需将其添加到文件中,开头或结尾即可。您可以为此类代码创建额外的文件。

Swift 3.0

extension UIImage {
    func crop( rect: CGRect) -> UIImage {
        var rect = rect
        rect.origin.x*=self.scale
        rect.origin.y*=self.scale
        rect.size.width*=self.scale
        rect.size.height*=self.scale

        let imageRef = self.cgImage!.cropping(to: rect)
        let image = UIImage(cgImage: imageRef!, scale: self.scale, orientation: self.imageOrientation)
        return image
    }
}


let myImage = UIImage(named: "Name")
myImage?.crop(rect: CGRect(x: 0, y: 0, width: 50, height: 50))

用于图像中心部分的裁剪:

let imageWidth = 100.0
let imageHeight = 100.0
let width = 50.0
let height = 50.0
let origin = CGPoint(x: (imageWidth - width)/2, y: (imageHeight - height)/2)
let size = CGSize(width: width, height: height)

myImage?.crop(rect: CGRect(origin: origin, size: size))