2017-12-06 3 views
0

Ich habe eine UIImageView, mit einem bestimmten Bild. Ich habe auch eine UIBezierPath in einer seltsamen Form. Ich möchte das Bild auf diese Form schneiden und ein neues Bild in dieser Form zurückgeben.Schneiden Sie eine UIImageView nach UIBezier?

enter image description here

In Form von:

func getCut(bezier:UIBezierPath, image:UIImageView)->UIImageView 

Antwort

2

Sie können mask dazu verwenden. Hier ist ein kurzes Beispiel.

0

Sie CAShapeLayer für die Gestaltung des Bildes ... & dann Bild von dieser Form ...

UIGraphicsBeginImageContext(imgView.bounds.size); 
[imgView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *mainImg = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

bekommen können Danke ...

Refere nced von here ..

+0

Danke, aber das ist nicht schnell und keine Antwort auf meine Frage überhaupt. – Curnelious

+0

@Curnelious, wenn diese Antwort mit der Gleichung Ansatz okay ist, dann ist der Ansatz gleich, nur den Code in schnelle umwandeln .. – Simmy

0

Verwenden Sie UIGraphicsImageRenderer, um ein Bild mit einem Beschneidungspfad zu erstellen. Hier ist ein Spielplatz:

import PlaygroundSupport 
import UIKit 

let imageToCrop = UIImage(named: "test.jpg")! 
let size = imageToCrop.size 
let cutImage = UIGraphicsImageRenderer(size: size).image { imageContext in 
    let context = imageContext.cgContext 
    let clippingPath = UIBezierPath(ovalIn: CGRect(origin: .zero, size: size)).cgPath 
    context.addPath(clippingPath) 
    context.clip(using: .evenOdd) 
    imageToCrop.draw(at: .zero) 
} 

let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 300, height: 300)) 
imageView.image = cutImage 
PlaygroundPage.current.liveView = imageView 
Verwandte Themen