【问题标题】:how I show image name on button ? When we Uploading it?如何在按钮上显示图像名称?当我们上传它?
【发布时间】:2018-03-06 05:35:09
【问题描述】:

我正在通过单击按钮上传图像,我想在同一个按钮上显示图像名称(我用来上传图像)我该怎么办?

    @IBAction func btnChooseImageAction(_ sender: Any) {

    if UIImagePickerController.isSourceTypeAvailable(.savedPhotosAlbum   {
        print("Button capture")

        imagePicker.delegate = self
        imagePicker.sourceType = .savedPhotosAlbum;
        imagePicker.allowsEditing = false

        self.present(imagePicker, animated: true, completion: nil)
        }
     }

【问题讨论】:

标签: swift uibutton uiimageview uiimagepickercontroller


【解决方案1】:

当您使用 UIImagePickerController 选择图像并上传到服务器时。请按照以下步骤获取文件名

第 1 步。
import AssetsLibrary import Photos

第 2 步。确保 Info.plist 中必须包含一个 NSPhotoLibraryUsageDescription 键和一个字符串值,向用户解释应用程序如何使用这些数据。

Step 3. Image Picker Controller 委托方法获取所选图像的信息

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    let url = info[UIImagePickerControllerReferenceURL] as! URL
    let assets = PHAsset.fetchAssets(withALAssetURLs: [url], options: nil)
    let fileName = PHAssetResource.assetResources(for: assets.firstObject!).first!.originalFilename
    print("fileName = \(fileName)")

 dismiss(animated: true, completion: nil)

}

注意:您可以通过查看文档或谷歌搜索来解决一些警告。 如果这个答案对你有帮助,请投票。

【讨论】:

    【解决方案2】:

    这是在按钮上获取任何图像名称的完整且正确的代码。当我们上传它时。

        @IBAction func btnChooseImageAction(_ sender: Any) {
    
        let actionSheet = UIAlertController(title: "Choose From", message: "Choose an image from.", preferredStyle: .actionSheet)
    
        let camera = UIAlertAction(title: "Camera", style: .default) { (UIAlertAction) -> Void in
            print("Clicked on Camera")
    
            if UIImagePickerController.isSourceTypeAvailable(.camera)
            {
                self.picker.sourceType = .camera
    
                //check device camera front or rear availabilty
                if UIImagePickerController.isCameraDeviceAvailable(.front)
                {
                    self.picker.cameraDevice = .front
                    //cehck for flash
                    if UIImagePickerController.isFlashAvailable(for: .front)
                    {
                        self.picker.cameraFlashMode = .on
                    }
                }
                else
                {
                    self.picker.cameraDevice = .rear
    
                    if UIImagePickerController.isFlashAvailable(for: .front)
                    {
                        self.picker.cameraFlashMode = .on
                    }
                }
    
    
    
    
                //check what you want to capture photo or video
                self.picker.cameraCaptureMode = .photo
                self.picker.allowsEditing = true
                self.present(self.picker, animated: true, completion: { () -> Void in
                })
            }
        }
    
        let gallery = UIAlertAction(title: "Gallery", style: .default) { (UIAlertAction) -> Void in
    
            print("Clicked on Gallery")
    
            if UIImagePickerController.isSourceTypeAvailable(.photoLibrary)
            {
                self.picker.sourceType = .photoLibrary
                self.picker.allowsEditing = true
    
                self.present(self.picker, animated: true, completion: { () -> Void in
    
                })
            }
        }
    
        let cancel = UIAlertAction(title: "Cancel", style: .cancel) { (UIAlertAction) -> Void in
            print("Clicked on Cancel")
        }
    
        actionSheet.addAction(gallery)
        actionSheet.addAction(camera)
        actionSheet.addAction(cancel)
    
        self.present(actionSheet, animated: true) { () -> Void in
    
        }
    }
    
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])
    {
        if let image = info[UIImagePickerControllerEditedImage] as? UIImage
        {
            imageview.image = image
            let sonu = getFileName(info: info)
            print(sonu)
            if sonu == "JPG"
            {
                imageDataForApi = UIImagePNGRepresentation(image)
            }
            else if sonu == "PNG"
            {
                imageDataForApi = UIImageJPEGRepresentation(image, 0)
            }
        }
        self.dismiss(animated: true) { () -> Void in
    
        }
    
    }
    
    func getFileName(info: [String : Any]) -> String {
    
        if let assetPath = info[UIImagePickerControllerReferenceURL] as? URL {
            let result = PHAsset.fetchAssets(withALAssetURLs: [assetPath], options: nil)
            let asset = result.firstObject
            let fileName = asset?.value(forKey: "filename")
            let fileUrl = URL(string: fileName as! String)
            if let name = fileUrl?.deletingPathExtension().lastPathComponent {
                print(name)
    
    
         //let assetPath = info[UIImagePickerControllerReferenceURL] as! NSURL
                if (assetPath.absoluteString.hasSuffix("JPG")) {
                    sonu = "JPG"
                    print("JPG")
                }
                else if (assetPath.absoluteString.hasSuffix("PNG")) {
                    sonu = "PNG"
                    print("PNG")
                }
                else if (assetPath.absoluteString.hasSuffix("GIF")) {
                    sonu = "GIF"
                    print("GIF")
                }
                else {
                    sonu = "Unknown"
                    print("Unknown")
                }
    
                return name
            }
        }
        return ""
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多