2016-09-23 9 views
0

Ich habe eine App, die ein Profilbild für den Benutzer enthält. Nachdem der Benutzer das Foto auswählt, sie wollen, wird es automatisch mit dem folgenden Grund UIImage Erweiterung abgeschnitten:Cropped UIImage Orientierung/Stretching

func crop() -> UIImage { 

    let imageRef:CGImageRef = CGImageCreateWithImageInRect(self.CGImage, CGRectMake(0, self.size.height/2 - self.size.width/2, self.size.width, self.size.width))! 
    let cropped:UIImage = UIImage(CGImage:imageRef) 

    return cropped 

} 

Es funktioniert für die meisten Fotos, aber manchmal aus irgendeinem Grund ändert sich die Ausrichtung des Fotos, und manchmal ist es dehnt das Foto aus. Im Folgenden finden Sie ein Foto von jedem so können Sie sehen, was ich meine:

Wrong Orientation

Stretching/Compressing

Ich habe viele Beiträge über falsche Orientierung lesen und verstehen immer noch nicht, was oben mit meinem Code falsch . Außerdem habe ich nichts über das Dehnen/Komprimieren von Fotos gesehen.

Hat jemand eine Idee, wie ich diese Probleme beheben könnte?

Vielen Dank im Voraus!

+0

Fotos mit dem Handy nehmen ihre 'imageOrientation' Eigenschaft, die Sie berücksichtigen sollten, wenn die' cropped' Bild instanziieren. Die Dehnung sollte mit 'UIImageView's' contentMode' Eigenschaft behoben werden können. –

Antwort

0

Verwendung dieses

image.layer.borderWidth = 1.0 
image.layer.masksToBounds = false 
image.layer.borderColor = UIColor.whiteColor().CGColor 
image.layer.cornerRadius = image.frame.size.width/2 
image.clipsToBounds = true 
+0

Wie soll ich das in meiner Erweiterung verwenden? –

+0

nehmen Sie Ihr Bild, das Sie im Bild (Bild) abgeschnitten werden soll, dann verwenden Sie diesen Code – Soul