2017-03-17 64 views
2

enter image description here如何将图像拉伸成自定义形状(swift3)

下面的代码列表会裁剪图像。我希望图像能够变形/拉伸,而不是在形状上裁剪。所有的图像内容仍然在变换后的图像中。它只会看起来不同。

extension UIImageView { 
func addMask(_ bezierPath: UIBezierPath) { 
    let pathMask = CAShapeLayer() 
    pathMask.path = bezierPath.cgPath 
    layer.mask = pathMask 
} 
    } 


    let myPicture = UIImage(data: try! Data(contentsOf: URL(string:"https://scontent-iad3-1.xx.fbcdn.net/v/t31.0-8/14196150_10207770295835716_3510332720585393213_o.jpg?oh=fdb525410602f40f4735991b713e9c50&oe=596688E5")!))! 
    let iv = UIImageView(image: myPicture) 

    let bezierPath = UIBezierPath() 
    bezierPath.move(to: iv.center) 
    bezierPath.addLine(to: CGPoint(x: iv.frame.maxX, y: 0)) 
    bezierPath.addLine(to: CGPoint(x: iv.frame.maxX, y: iv.frame.maxY)) 
    bezierPath.addLine(to: CGPoint(x: 0, y: iv.frame.maxY)) 
    bezierPath.addLine(to: .zero) 
    bezierPath.close() 

iv.addMask(bezierPath) 

回答

0

时,你必须显示你可以使用图像滤芯或者你可以尝试图像屏蔽这种类型的图像..

图像核心过滤:秀:

https://www.appcoda.com/core-image-introduction

https://code.tutsplus.com/tutorials/ios-sdk-apply-photo-filters-with-core-image-in-swift--cms-27142 

图像遮蔽:

https://www.innofied.com/implementing-image-masking-in-ios/

我是尽我best..to提供solution..that是简单的图像

enter image description here

是面具形象是GIF类型的图像

enter image description here

代码写

override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     let image = UIImage(named: "image.gif") 
     let maskingImage = UIImage(named: "mask-image.gif") 
     imageView.image = maskImage(image: image!, mask: maskingImage!) 
    } 

func maskImage(image:UIImage, mask:(UIImage))->UIImage{ 

    let imageReference = image.cgImage 
    let maskReference = mask.cgImage 

    let imageMask = CGImage(maskWidth: maskReference!.width, 
          height: maskReference!.height, 
          bitsPerComponent: maskReference!.bitsPerComponent, 
          bitsPerPixel: maskReference!.bitsPerPixel, 
          bytesPerRow: maskReference!.bytesPerRow, 
          provider: maskReference!.dataProvider!, decode: nil, shouldInterpolate: true) 

    let maskedReference = imageReference!.masking(imageMask!) 

    let maskedImage = UIImage(cgImage:maskedReference!) 

    return maskedImage 
} 

最终结果 enter image description here

+0

https://www.innofied.com/implementing-image-masking-in-ios/这正是我期待的但它似乎是在swift2,而不是迅速的3 –

+0

如何如果您只是更改建议的编辑,则首先会比代码更好地使用imageview。 –

+0

好吧,我会给你演示.. –