我执行以下代码:
let croppedCGImage = originalUIImage.cgImage!.cropPing(to: cropRect)let croppedUIImage = UIImage(cgImage: croppedCGImage!)
这段代码工作,但是结果,croppedullmage,具有不正确的scale属性1.0.
创建最终图像时,我已经尝试指定了缩放比例:
let croppedUIImage = UIImage(cgImage: croppedCGImage!,scale: 2.0,orIEntation: .up)
这产生正确的比例,但是它将尺寸尺寸减半地不正确.
我该怎么办?
(*注意:UIImage上的scale属性很重要,因为我稍后用受尺度属性影响的UIImagePNGRepresentation(_ image:UIImage)保存图像)
编辑:
我得到以下工作.不幸的是,它比CGImage裁剪功能慢得多.
extension UIImage { func cropPing(to rect: CGRect) -> UIImage { UIGraphicsBeginImageContextWithOptions(rect.size,false,self.scale) self.draw(in: CGRect(x: -rect.origin.x,y: -rect.origin.y,wIDth: self.size.wIDth,height: self.size.height)) let croppedImage = UIGraphicsGetimageFromCurrentimageContext()! UIGraphicsEndImageContext() return croppedImage }}解决方法 尝试这个:
extension UIImage { func imageByCropToRect(rect:CGRect,scale:Bool) -> UIImage { var rect = rect var scaleFactor: CGfloat = 1.0 if scale { scaleFactor = self.scale rect.origin.x *= scaleFactor rect.origin.y *= scaleFactor rect.size.wIDth *= scaleFactor rect.size.height *= scaleFactor } var image: UIImage? = nil; if rect.size.wIDth > 0 && rect.size.height > 0 { let imageRef = self.cgImage!.cropPing(to: rect) image = UIImage(cgImage: imageRef!,scale: scaleFactor,orIEntation: self.imageOrIEntation) } return image! }}总结
以上是内存溢出为你收集整理的ios – 如何裁减UIImage,而不会失去它的规模财产?全部内容,希望文章能够帮你解决ios – 如何裁减UIImage,而不会失去它的规模财产?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)