2016-09-03 35 views
8

Bir görüntü alan ve görüntünün ortasında bir dikdörtgen hariç her şeyi kesen bir uygulama yazıyorum. (SWIFT) Kırpma işlevini çalışmam mümkün değil. Farklı kılavuzları bir sürü baktım ama hiçbiri benim için çalışmıyor gibi görünüyorSwift'de bir UIImage kırpma sorunları

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 
    } 

: Bu ne var şimdi olduğunu. Bazen görüntü 90 derece döndürülür, neden bunu yaptığını bilmiyorum.

+0

Welcome. Sorunuzdan önce, lütfen bu sitede neyin yararlı olduğunu kontrol edin. http://stackoverflow.com/questions/158914/cropping-an-uiimage/29294333#29294333 – pedrouan

+0

Benzer bir soru gibi görünüyor, ancak Swift ile ilgili bir sorunum var, Objective-C değil. – mawnch

+0

Ve ayrıca hızlı bir şekilde birçok çözüm var. Bu en iyi görünüyor: http://stackoverflow.com/a/30403863/661022 – pedrouan

cevap

15

Eğer bir uzantı kullanmak isterseniz, sadece dosyanın başına veya sonuna eklemeniz yeterlidir. Bu kod için ekstra bir dosya oluşturabilirsiniz.

bir görüntünün bir merkezi bölümünün ürün için 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)) 

Swift: taşma yığın

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)) 
+0

En son Swift 3.0'da örneği yayınladım. Eski sürümde çalıştığınız takdirde, kopyala yapıştırmak bazı düzeltmeler gerektirir. – pedrouan

+0

Kırpma işe yarıyor gibi görünüyor, ancak aslında istediğim resmin bölümünü kırpamıyorum. Örneğin, argümanlar (50,50,500,500), görüntünün ekranın sağ üst kısmından bir kısmını döndürür, bu da bana mantıklı gelmez. Ekranın ortasında bir dikdörtgen istiyorsanız (bu http://imgur.com/a/vOMsb gibi) dikdörtgen dikdörtgeni ne olmalıdır? – mawnch

+0

@KaviRamamurthy Cevabımı güncelledim. – pedrouan