新聞中心
這篇文章主要介紹iOS如何實(shí)現(xiàn)圖片裁剪,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)服務(wù)團(tuán)隊(duì)是一支充滿著熱情的團(tuán)隊(duì),執(zhí)著、敏銳、追求更好,是創(chuàng)新互聯(lián)的標(biāo)準(zhǔn)與要求,同時(shí)竭誠(chéng)為客戶提供服務(wù)是我們的理念。創(chuàng)新互聯(lián)把每個(gè)網(wǎng)站當(dāng)做一個(gè)產(chǎn)品來(lái)開(kāi)發(fā),精雕細(xì)琢,追求一名工匠心中的細(xì)致,我們更用心!
iOS 圖片裁剪方法,主要有兩種,一起來(lái)看下。
通過(guò) CGImage 或 CIImage 裁剪
UIImage
有cgImage
和ciImage
屬性,分別可以獲得CGImage
和CIImage
對(duì)象。CGImage
和CIImage
對(duì)象都有cropping(to:)
方法,傳入CGRect
的參數(shù)表示要裁剪的區(qū)域(采用UIImage
的坐標(biāo))。
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 }
對(duì)CGImage
來(lái)說(shuō),傳入的CGRect
參數(shù)如果完全不在原圖區(qū)域內(nèi),cropping(to:)
方法返回空;如果有部分在原圖區(qū)域內(nèi),cropping(to:)
方法返回在原圖區(qū)域部分的CGImage
。
通過(guò)位圖(Bitmap)裁剪
通過(guò)位圖重新繪制圖片,也可以獲得裁剪之后的圖片。
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 }
位圖大小為需要裁剪區(qū)域CGRect
的大小size
。用原圖繪制,為了使裁剪區(qū)域正好在位圖區(qū)域,需要進(jìn)行坐標(biāo)位移context.translateBy(x: -rect.minX, y: -rect.minY)
。
如果傳入的CGRect
參數(shù)有部分或全部不在原圖區(qū)域內(nèi),則超出原圖區(qū)域的部分也會(huì)被繪制(繪制為透明),這與CGImage
的裁剪方法不同。
簡(jiǎn)單試了幾次,發(fā)現(xiàn)通過(guò) CGImage 裁剪的 CPU 占用率比通過(guò)位圖裁剪要低。僅從性能角度考慮,推薦使用前者。如果希望裁剪出來(lái)的圖片不超出原圖區(qū)域,也推薦使用前者。如果需要繪制其他的內(nèi)容(比如其他形狀、顏色,或繪制的內(nèi)容超出原圖區(qū)域),則要使用后者。
以上是“iOS如何實(shí)現(xiàn)圖片裁剪”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
名稱欄目:iOS如何實(shí)現(xiàn)圖片裁剪
文章轉(zhuǎn)載:http://www.dlmjj.cn/article/jidios.html