照片編輯 App 一起來修修圖吧

不管是水水 IG 網美照,還是正經八百相親照,照片編輯器始終扮演著撫慰人類心靈、美化真實世界的重要角色。這次模仿了 iOS 照片 App 的幾項基本編輯功能,一起來為維護世界和平修修圖吧~

作品展示

點擊「選取照片」並選擇從相簿選(模擬器無法模擬拍照功能),自手機相簿中選擇任一照片進行以下編輯:

  • 旋轉功能:除可進行水平鏡像翻轉外,亦可順時鐘90度旋轉照片,愛轉幾圈轉幾圈。
  • 縮放功能:可依喜好拉動縮放條進行照片 1x、2x、3x 的放大與縮小。
  • 圖片比例:可調整圖片長寬比以變更照片匯出比例,如 1:1、16:9、10:8、7:5、4:3。

編輯完成後點擊「儲存照片」即可將滿意成果真心不騙的存入手機相簿之中。

實作重點

搭配 UIImagePickerController 及 UIAlertController 實現選取照片功能,由於拍照無法在模擬器上測試,因此僅先實作從相簿選照片的部分。

值得注意的是,選完照片須呼叫 UIImagePickerControllerDelegate 的 function imagePickerController 才能順利將所選照片指定給專屬物件顯示出來。

若想拍照或想將照片存入相簿中,一定要在 App Info 頁面中設定請求相關權限的文字,此處新增了 3 個設定:

  • 請求取用相機權限的 Privacy — Camera Usage Description
  • 請求取用相片權限的 Privacy — Photo Library Usage Description
  • 請求加入相片權限的 Privacy — Photo Library Additions Usage Description。

結合 UISegmentedControl 取得選定值並計算出長寬比例後,再利用 bounds.size 來調整圖片比例。

使用 CGAffineTransform 實作照片旋轉及縮放功能,藉由設定 scaleX 進行鏡像翻轉及放大縮小,而設定 rotationAngle 則使圖片每次以90度順時鐘方向進行旋轉。

運用 UIGraphicsImageRenderer 及 drawHierarchy 將修改後的照片內容繪製成圖片,再利用 UIActivityViewController 實現圖片分享並儲存到手機相簿裡。

由於先前設定過請求加入相片權限的 Privacy — Photo Library Additions Usage Description,因此儲存照片時會跳出請求權限視窗,若不允許…照片可是存不進去的喔!

--

--