iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 14
0
自我挑戰組

打造專案管理 iOS App 系列 第 14

安能取熊掌而舍魚 利用 UIImagePickerController 讀取相簿

  • 分享至 

  • xImage
  •  

安能取熊掌而舍魚 利用 UIImagePickerController 讀取相簿

先來看看UIImagePickerController可以為我們帶來什麼吧。

  • iOS上實現拍照或是讀取相簿的功能
  • 拍完照片返回照片文件
  • 在相冊中選擇需要的圖片?

不過UIImagePickerController 不是唯一的方式,ALAssetsLibrary 與 AVFoundation 也可以做到同樣的效果。

佈置 UIImagePickerController 環境

  1. 在info.plist文件中配置相機麥克風和相冊的隱私訪問請求。
  2. 判斷設備是否支持錄像和拍照。
  3. 設置UIImagePickerController 的資源類型。
  4. 設置媒體類型多媒體格式(聲音和視頻)/照片
  5. 設置UIImagePickerController 的其他屬性例如:最大時長、錄像的質量、閃光燈類型等。
  6. UINavigationControllerDelegate,UIImagePickerControllerDelegate 代理,並設置代理。
  7. 在代理方法- imagePickerController: didFinishPickingMediaWithInfo: 中拿到獲取的媒體資源,並進行相關的操作。

在info.plist 文件配置權限

首先要在info.plist文件配置權限需求

點擊info.plist

配置相機屬性

該段程式碼定義了相機的屬性,並且開啟了相簿。

func openCamara(_ sender: UIButton) {
        // CameraPermissionRequestAlertFuntion()
        imagePicker.sourceType = .camera
        imagePicker.cameraDevice = .rear
        imagePicker.cameraCaptureMode = .photo
        imagePicker.cameraFlashMode = .off
        imagePicker.imageExportPreset = .compatible
        show(imagePicker, sender: self)
        print("Open Camera")
    }

儲存照片

extension ViewController: UIImagePickerControllerDelegate,UINavigationControllerDelegate{
     func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        print("Use photo")
        let image = info[.originalImage] as! UIImage//取得拍下的照片
        myImageView.image = image
        print("取得照片")
            UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)//將相片存擋
        print("照片存擋")
            dismiss(animated: true, completion: nil)
    }
}

延伸:
官方有建議的權限判斷語法,可以防止例外狀況的發生

延伸 keyword:ALAssetsLibrary,AVFoundation
參考文件:https://www.jianshu.com/p/13ce87f2ffb0


UIImageView
首先要取得螢幕尺寸。宣告一個常數,裝進螢幕的 size。有了螢幕的尺寸,就可以對應並抓取適合顯示的尺寸,下面兩個funtion 就是延伸的運用:
imageSizeSet : 對應螢幕大小設定圖片
imageCenterSet: 設定圖片中心點


上一篇
一個與網路的心靈獨白 URL轉Image
下一篇
安能取熊掌而捨魚? addTarget 邏輯疑解
系列文
打造專案管理 iOS App 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言