Bor*_*ell 6 crop uiimageview ios swift
我正在研究自定义相机应用程序.事情很好.
但是我从底部裁剪图像时遇到了问题.即,裁剪后的图像与原始图像具有完全相同的宽度,但高度将是原始图像的1/3,并且必须从底部开始.
ale*_*nik 22
Swift 3解决方案:
func cropBottomImage(image: UIImage) -> UIImage {
let height = CGFloat(image.size.height / 3)
let rect = CGRect(x: 0, y: image.size.height - height, width: image.size.width, height: height)
return cropImage(image: image, toRect: rect)
}
Run Code Online (Sandbox Code Playgroud)
使用rect进行裁剪的辅助方法:
func cropImage(image:UIImage, toRect rect:CGRect) -> UIImage{
let imageRef:CGImage = image.cgImage!.cropping(to: rect)!
let croppedImage:UIImage = UIImage(cgImage:imageRef)
return croppedImage
}
Run Code Online (Sandbox Code Playgroud)
这几乎是Alexburtnik的答案
但只是提到UIImage.size是逻辑大小(在"点"中)
但是,CGImage.cropping()使用了实际尺寸(以"像素"为单位)
因此,如果你使用带有@ 2x或@ 3x修饰符的图像,你会发现裁剪实际上是预期的一半或三分之一.
因此,在裁剪时,您可以考虑首先将rect乘以图像的"scale"属性,如下所示:
func cropImage(image:UIImage, toRect rect:CGRect) -> UIImage? {
var rect = rect
rect.size.width = rect.width * image.scale
rect.size.height = rect.height * image.scale
guard let imageRef = image.cgImage?.cropping(to: rect) else {
return nil
}
let croppedImage = UIImage(cgImage:imageRef)
return croppedImage
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6743 次 |
| 最近记录: |