iOS: Select a GIF from the photo library, convert to NSData for use in multipart/form-data

前端 未结 4 1633
孤城傲影
孤城傲影 2020-12-05 05:58

What\'s currently working in my code:

I select a JPG or PNG from the Photo Library (using standard ImagePicker methods), and convert that image to NSData using:

4条回答
  •  北海茫月
    2020-12-05 06:19

    Here's Eli's version using Swift 3:

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: Any]) {
        guard let imageURL = info[UIImagePickerControllerReferenceURL] as? URL else { return }
        guard let asset = PHAsset.fetchAssets(withALAssetURLs: [imageURL], options: nil).lastObject else { return }
    
        if picker.sourceType == .photoLibrary || picker.sourceType == .savedPhotosAlbum {
            let options = PHImageRequestOptions()
            options.isSynchronous = true
            options.isNetworkAccessAllowed = false
            options.deliveryMode = .highQualityFormat
            PHImageManager.default().requestImageData(for: asset, options: options) { data, uti, orientation, info in
                guard let info = info else { return }
    
                if let error = info[PHImageErrorKey] as? Error {
                    log.error("Cannot fetch data for GIF image: \(error)")
                    return
                }
    
                if let isInCould = info[PHImageResultIsInCloudKey] as? Bool, isInCould {
                    log.error("Cannot fetch data from cloud. Option for network access not set.")
                    return
                }
    
                // do something with data (it is a Data object)
            }
        } else {
            // do something with media taken via camera
        }
    }
    

提交回复
热议问题