web-dev-qa-db-ja.com

SwiftでのUIImageのトリミングに関する問題

私は画像を取り、画像の中央にある四角形を除くすべてを切り取るアプリを書いています。 (スウィフト)クロップ機能が動作しません。これは私が今持っているものです:

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度回転する場合がありますが、なぜそれを行うのかわかりません。

13
mawnch

拡張子を使用したい場合は、単にそれをファイルの最初または最後に追加するだけです。このようなコード用に追加のファイルを作成できます。

Swift 3.

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))
25
pedrouan