十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章主要介绍iOS如何实现图片裁剪,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
成都一家集口碑和实力的网站建设服务商,拥有专业的企业建站团队和靠谱的建站技术,十年企业及个人网站建设经验 ,为成都上千客户提供网页设计制作,网站开发,企业网站制作建设等服务,包括成都营销型网站建设,成都品牌网站建设,同时也为不同行业的客户提供成都网站设计、做网站的服务,包括成都电商型网站制作建设,装修行业网站制作建设,传统机械行业网站建设,传统农业行业网站制作建设。在成都做网站,选网站制作建设服务商就选创新互联。iOS 图片裁剪方法,主要有两种,一起来看下。
通过 CGImage 或 CIImage 裁剪
UIImage
有cgImage
和ciImage
属性,分别可以获得CGImage
和CIImage
对象。CGImage
和CIImage
对象都有cropping(to:)
方法,传入CGRect
的参数表示要裁剪的区域(采用UIImage
的坐标)。
static func cropImage(_ image: UIImage, withRect rect: CGRect) -> UIImage? { if let cgImage = image.cgImage, let croppedCgImage = cgImage.cropping(to: rect) { return UIImage(cgImage: croppedCgImage) } else if let ciImage = image.ciImage { let croppedCiImage = ciImage.cropping(to: rect) return UIImage(ciImage: croppedCiImage) } return nil }
对CGImage
来说,传入的CGRect
参数如果完全不在原图区域内,cropping(to:)
方法返回空;如果有部分在原图区域内,cropping(to:)
方法返回在原图区域部分的CGImage
。
通过位图(Bitmap)裁剪
通过位图重新绘制图片,也可以获得裁剪之后的图片。
static func cropImage(_ image: UIImage, withRect rect: CGRect) -> UIImage? { UIGraphicsBeginImageContext(rect.size) guard let context = UIGraphicsGetCurrentContext() else { return nil } context.translateBy(x: -rect.minX, y: -rect.minY) image.draw(at: .zero) let croppedImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return croppedImage }
位图大小为需要裁剪区域CGRect
的大小size
。用原图绘制,为了使裁剪区域正好在位图区域,需要进行坐标位移context.translateBy(x: -rect.minX, y: -rect.minY)
。
如果传入的CGRect
参数有部分或全部不在原图区域内,则超出原图区域的部分也会被绘制(绘制为透明),这与CGImage
的裁剪方法不同。
简单试了几次,发现通过 CGImage 裁剪的 CPU 占用率比通过位图裁剪要低。仅从性能角度考虑,推荐使用前者。如果希望裁剪出来的图片不超出原图区域,也推荐使用前者。如果需要绘制其他的内容(比如其他形状、颜色,或绘制的内容超出原图区域),则要使用后者。
以上是“iOS如何实现图片裁剪”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联网站建设公司行业资讯频道!
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。