2016-10-08 9 views
-2

Ich möchte gerundetes Bild in der Fotosammlung speichern. Ich versuche, aber das gespeicherte Bild ist nicht abgerundet.So speichern Sie gerundetes Bild in Fotos

extension UIImage { 
convenience init(view: UIView) { 
    UIGraphicsBeginImageContextWithOptions(view.frame.size, view.opaque, 0) 

    view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true) 

    view.layer.renderInContext(UIGraphicsGetCurrentContext()!) 
    let image = UIGraphicsGetImageFromCurrentImageContext() 

    UIGraphicsEndImageContext() 
    self.init(CGImage: image.CGImage!) 
} 
} 
//calling 
let image = UIImage(view: myView) 
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil) 
+0

Welcher Teil davon soll es rund machen? –

+0

Ich konvertiere UIView in ein Bild und speichere es dann in Photos. Und ich möchte gerundetes Bild in Fotos speichern –

+1

Ja, aber haben Sie keinen Code zum Runden geschrieben? Was haben Sie versucht, den Rundungseffekt zu erzielen? –

Antwort

-1

Versuchen Sie dies in Ihrer Erweiterung:

view.layer.cornerRadius = 20.0f; 

Sie können den Wert anpassen, um unterschiedliche Größen von Rundungs ​​zu erstellen.

+0

Ich versuchte es macht die Ansicht gerundet, aber wenn ich es in Fotos gespeichert, hat das Bild nicht abgerundet oder Kurve –

+0

Ja, du hast Recht. Ich versuche zu sehen, ob es irgendeinen Weg gibt, das Äquivalent für ein UII-Bild zu machen. –

0

Sie können nur das Bild in der Galerie speichern, aber Sie müssen es nach unten Code machen Runde sehen:

Verwenden Sie die folgende Funktion Bild Runde zu machen.

In Swift:

func maskRoundedImage(image: UIImage, radius: Float) -> UIImage { 
    var imageView: UIImageView = UIImageView(image: image) 
    var layer: CALayer = CALayer() 
    layer = imageView.layer 

    layer.masksToBounds = true 
    layer.cornerRadius = CGFloat(radius) 

    UIGraphicsBeginImageContext(imageView.bounds.size) 
    layer.renderInContext(UIGraphicsGetCurrentContext()) 
    var roundedImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    return roundedImage 
} 

In Objective C:

-(UIImage *)makeRoundedImage:(UIImage *) image radius: (float) radius{ 
    CALayer *imageLayer = [CALayer layer]; 
    imageLayer.frame = CGRectMake(0, 0, image.size.width, image.size.height); 
    imageLayer.contents = (id) image.CGImage; 

    imageLayer.masksToBounds = YES; 
    imageLayer.cornerRadius = radius; 

    UIGraphicsBeginImageContext(image.size); 
    [imageLayer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *roundedImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return roundedImage; 
} 

Nach Funktion wird ein abgerundetes Bild zurückkehren, müssen Sie image passieren und value, um es rund zu machen.

+0

Ja, ich würde zustimmen, dass dies die beste Lösung ist, aber anscheinend ist es nicht das, was OP will. –

+0

Ich habe das schon versucht, aber es funktioniert nicht. Das gespeicherte Bild in Fotos hat immer noch keinen Eckenradius. :(Ich möchte gerundetes Bild in Fotos speichern –

+0

Ich denke, Sie können nicht die Ecken des Bildes dauerhaft schneiden, aber mit dieser können Sie implizit machen, aber immer noch wollen Sie für Ihre Gole gehen müssen Sie einige relevante Rahmenbedingungen dafür finden und erzählen uns auch. – vaibhav

Verwandte Themen