如何将图像拉伸成自定义形状(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)
答
在这个线程看看:
Warp \ bend effect on a UIView?
有讨论了几个解决方案,包括使用核心图像过滤器,或建立自己的“网经”用OpenGL。
还有Brad Larson open source framework GPUImage on Github。您可能可以使用该框架构建过滤器来执行您想要的操作。
答
时,你必须显示你可以使用图像滤芯或者你可以尝试图像屏蔽这种类型的图像..
图像核心过滤:秀:
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是简单的图像
是面具形象是GIF类型的图像
代码写
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
}
https://www.innofied.com/implementing-image-masking-in-ios/这正是我期待的但它似乎是在swift2,而不是迅速的3 –
如何如果您只是更改建议的编辑,则首先会比代码更好地使用imageview。 –
好吧,我会给你演示.. –