欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

iOS 圖片裁剪的實現方法

 更新時間:2017年03月03日 09:26:58   作者:Silence_cnblogs  
本篇文章主要介紹了iOS 圖片裁剪的實現方法,主要介紹了兩種圖片剪裁的方法,具有一定的參考價值,有興趣的可以了解一下。

iOS 圖片裁剪方法,主要有兩種,一起來看下。

通過 CGImage 或 CIImage 裁剪

UIImagecgImageciImage屬性,分別可以獲得CGImageCIImage對象。CGImageCIImage對象都有cropping(to:)方法,傳入CGRect的參數表示要裁剪的區(qū)域(采用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參數如果完全不在原圖區(qū)域內,cropping(to:)方法返回空;如果有部分在原圖區(qū)域內,cropping(to:)方法返回在原圖區(qū)域部分的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
}

位圖大小為需要裁剪區(qū)域CGRect的大小size。用原圖繪制,為了使裁剪區(qū)域正好在位圖區(qū)域,需要進行坐標位移context.translateBy(x: -rect.minX, y: -rect.minY)。

如果傳入的CGRect參數有部分或全部不在原圖區(qū)域內,則超出原圖區(qū)域的部分也會被繪制(繪制為透明),這與CGImage的裁剪方法不同。

簡單試了幾次,發(fā)現通過 CGImage 裁剪的 CPU 占用率比通過位圖裁剪要低。僅從性能角度考慮,推薦使用前者。如果希望裁剪出來的圖片不超出原圖區(qū)域,也推薦使用前者。如果需要繪制其他的內容(比如其他形狀、顏色,或繪制的內容超出原圖區(qū)域),則要使用后者。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Flutter?GetPageRoute實現嵌套導航學習

    Flutter?GetPageRoute實現嵌套導航學習

    這篇文章主要為大家介紹了Flutter?GetPageRoute實現嵌套導航的示例學習,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 淺析IOS中播放gif動態(tài)圖的方法

    淺析IOS中播放gif動態(tài)圖的方法

    這篇文章主要介紹了淺析IOS中播放gif動態(tài)圖的方法的相關資料,需要的朋友可以參考下
    2017-03-03
  • iOS開發(fā)中CAlayer層的屬性以及自定義層的方法

    iOS開發(fā)中CAlayer層的屬性以及自定義層的方法

    這篇文章主要介紹了iOS開發(fā)中CAlayer層的屬性以及自定義層的方法,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2015-11-11
  • Swift實現iOS應用中短信驗證碼倒計時功能的實例分享

    Swift實現iOS應用中短信驗證碼倒計時功能的實例分享

    這篇文章主要介紹了Swift實現iOS應用中短信驗證碼倒計時功能的實例分享,開啟和關閉倒計時功能的步驟實現比較關鍵,需要的朋友可以參考下
    2016-04-04
  • iOS開發(fā)之微信聊天工具欄的封裝

    iOS開發(fā)之微信聊天工具欄的封裝

    這篇文章主要為大家詳細介紹了iOS開發(fā)之微信聊天工具欄的封裝,針對聊天工具條進行封裝,感興趣的小伙伴們可以參考一下
    2016-02-02
  • iOS開發(fā)中Date Picker和UITool Bar控件的使用簡介

    iOS開發(fā)中Date Picker和UITool Bar控件的使用簡介

    這篇文章主要介紹了iOS開發(fā)中Date Picker和UITool Bar控件的使用簡介,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2016-01-01
  • 最新評論