过滤器在 GPUImageBulgeDistortionFilter 中应用不正确
Filter not apply properly in GPUImageBulgeDistortionFilter
我想对点击的图片区域进行缩放。
当我将 GPUImageBulgeDistortionFilter 应用于图像时,它在中心点 (0.5 , 0.5) 处正常工作,但是当中心点更改时,图像上的效果不适用于给定的中心点。
Image Square工作正常。
图像宽度 > 图像高度。中心点 (0.5, 0.2) 应用于 (0.5, 0.1) 中心点 (0.5, 0.8) 应用于 (0.5, 0.9)
图像宽度 < 图像高度。中心点 (0.5, 0.2) 应用于 (0.5, 0.3) 中心点 (0.5, 0.8) 应用于 (0.5, 0.7)
func tapGesture(_ sender: Any){
let points = tap.location(ofTouch: 0, in: ivPic)
let stillImageFilter = GPUImageBulgeDistortionFilter()
stillImageFilter.center = CGPoint(x: points.x / ivPic.frame.size.width, y: points.y / ivPic.frame.size.height)
stillImageFilter.radius = 0.1
stillImageFilter.scale = 0.1
ivPic.image = stillImageFilter.image(byFilteringImage: ivPic.image)
}
试试这个
func tapGesture(_ sender: Any) {
let points = tap.location(in: ivPic)
let stillImageFilter = GPUImageBulgeDistortionFilter()
let aspectRatio = ivPic.frame.size.height / ivPic.frame.size.width
stillImageFilter.center = CGPoint(x: points.x / ivPic.frame.size.width, y: ((((points.y / ivPic.frame.size.height) * aspectRatio) + 0.5) - (0.5 * aspectRatio)))
stillImageFilter.radius = 0.1
stillImageFilter.scale = 0.1
ivPic.image = stillImageFilter.image(byFilteringImage: ivPic.image)
}
我想对点击的图片区域进行缩放。
当我将 GPUImageBulgeDistortionFilter 应用于图像时,它在中心点 (0.5 , 0.5) 处正常工作,但是当中心点更改时,图像上的效果不适用于给定的中心点。
Image Square工作正常。
图像宽度 > 图像高度。中心点 (0.5, 0.2) 应用于 (0.5, 0.1) 中心点 (0.5, 0.8) 应用于 (0.5, 0.9)
图像宽度 < 图像高度。中心点 (0.5, 0.2) 应用于 (0.5, 0.3) 中心点 (0.5, 0.8) 应用于 (0.5, 0.7)
func tapGesture(_ sender: Any){
let points = tap.location(ofTouch: 0, in: ivPic)
let stillImageFilter = GPUImageBulgeDistortionFilter()
stillImageFilter.center = CGPoint(x: points.x / ivPic.frame.size.width, y: points.y / ivPic.frame.size.height)
stillImageFilter.radius = 0.1
stillImageFilter.scale = 0.1
ivPic.image = stillImageFilter.image(byFilteringImage: ivPic.image)
}
试试这个
func tapGesture(_ sender: Any) {
let points = tap.location(in: ivPic)
let stillImageFilter = GPUImageBulgeDistortionFilter()
let aspectRatio = ivPic.frame.size.height / ivPic.frame.size.width
stillImageFilter.center = CGPoint(x: points.x / ivPic.frame.size.width, y: ((((points.y / ivPic.frame.size.height) * aspectRatio) + 0.5) - (0.5 * aspectRatio)))
stillImageFilter.radius = 0.1
stillImageFilter.scale = 0.1
ivPic.image = stillImageFilter.image(byFilteringImage: ivPic.image)
}