【问题标题】:Image Picker does not crop the image for me correctly (swift) (firebase)Image Picker 不能正确地为我裁剪图像(swift)(firebase)
【发布时间】:2020-05-26 19:40:09
【问题描述】:

我有一个图像选择器,在图像被选择后,它应该会上传到我的 Firebase 存储中。 现在我有一个问题:不知何故,所有图像都没有正确裁剪。

我是不是放错了一些代码,因为这是我唯一能想到的,因为我已经得到了 picker.allowsEditing = true

图片已正确上传,但不是我打算如何裁剪它。 “cropper-window”出现了,但没有按预期保存。

这是我的代码:

import UIKit
import Firebase

class editViewController: UIViewController  {

    @IBOutlet var pfp: UIImageView!

    var fireImage: UIImage? = nil

    override func viewDidLoad() {
        super.viewDidLoad()
        setupPfp()
    }

    func setupPfp(){
        pfp.layer.cornerRadius = pfp.frame.height/2
        pfp.clipsToBounds = true
        pfp.isUserInteractionEnabled = true
        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(presentPicker))
        pfp.addGestureRecognizer(tapGesture)
    }

    @objc func presentPicker(){
        let picker = UIImagePickerController()
        picker.sourceType = .photoLibrary
        picker.allowsEditing = true
        picker.delegate = self
        self.present(picker, animated: true, completion: nil)

    }

    func uploadToFirebase(){

        guard let imageSelected = self.fireImage else {
            print("Image is nil")
            return
        }

        guard let imageData = imageSelected.jpegData(compressionQuality: 0.5) else {
            return
        }

        let storageRef = Storage.storage().reference(forURL: "gs://lidjd-9dad5.appspot.com")
        let storageProfileRef = storageRef.child("profileImages").child(Auth.auth().currentUser!.uid)
        let metadata = StorageMetadata()
        let db = Firestore.firestore()
        let userID = Auth.auth().currentUser!.uid
        let docRef = db.collection("users").document(userID)
        metadata.contentType = "image/jpeg"
        storageProfileRef.putData(imageData, metadata: metadata) { (storageMetaData, error) in
            if error != nil{
                print(error!.localizedDescription)
                return
            }
            storageProfileRef.downloadURL { (url, error) in
                if let metaImageUrl = url?.absoluteString{
                    print(metaImageUrl)
                    docRef.updateData([
                        "profileimage": metaImageUrl
                    ]){ err in
                    if let err = err {
                        print("Error updating document: \(err)")
                    } else {
                        print("Profile Image successfully updated")
                        }}
                }
            }
        }


    }

}

extension editViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate{

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        if let imageSelected = info[UIImagePickerController.InfoKey.editedImage] as? UIImage {
            fireImage = imageSelected
            pfp.image = imageSelected
        }

        if let imageOriginal = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
            fireImage = imageOriginal
            pfp.image = imageOriginal
        }

        picker.dismiss(animated: true, completion: nil)
        uploadToFirebase()

    }

}

【问题讨论】:

    标签: ios swift firebase uiimagepickercontroller


    【解决方案1】:

    选择其中一个 .. 在您当前的代码中,您总是使用原始图像

      extension editViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate{
    
            func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
                if let imageSelected = info[UIImagePickerController.InfoKey.editedImage] as? UIImage {
                    fireImage = imageSelected
                    pfp.image = imageSelected
                }
    
                else if let imageOriginal = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
                    fireImage = imageOriginal
                    pfp.image = imageOriginal
                }
    
                picker.dismiss(animated: true, completion: nil)
                uploadToFirebase()
    
            }
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-16
      • 2017-04-12
      • 1970-01-01
      • 2015-06-29
      相关资源
      最近更新 更多