【swift】이 사토호는 jpeg인가 png인가 아니면 〇〇? ?

【swift】이 요시오카 리호 짱은 jpeg인가 png인가 아니면 〇〇? ?


  • 드디어 카메라 롤에 저장해 버린다 요시오카 리호 씨 하지만 그 이미지를 alamofire 등으로 POST할 때 imageType을 지정하지 않으면 안됩니다.
  • 그래서 이번에 이미지가 jpeg인지 png인지 아니면 00인지를 판정하는 extension을 메모로 남깁니다.

  • 내 사토 짱 최고의 컬렉션





    구현하다



    URLExtension 만들기


  • 먼저 URL extension을 작성하면서 enum으로 확장자를 열거하십시오.

    URLExtension.swift
    enum ImageType: String {
        case png = "png"
        case gif = "gif"
        case jpg = "jpeg"
        case bmp = "bmp"
    }
    
    extension URL {
        func imageTypeForExtention() -> ImageType? {
            let ext = self.pathExtension.lowercased()
            switch ext {
            case "jpg" , "jpeg":
                return .jpg
            case "png":
                return .png
            case "gif":
                return .gif
            case "bmp":
                return .bmp
            default:
                return nil
            }
        }
    }
    

    UIImagePickerController로 요시오카 리호 짱 (이미지) 꺼내기


  • info[UIImagePickerControllerReferenceURL] 로 이미지의 URL을 알기 때문에 그 URL을 사용해 .pathExtension.lowercased() 로 판정하고 있습니다.
  • UIImagePickerController의 카메라로 촬영한 경우는, jpeg이므로 그대로 jpeg를 사용해 주세요.

  • ViewController.swift
        /*
         * 吉岡里帆ちゃんベスト・コレクション一覧(フォトライブラリ)から選ぶ
         */
        private func showPickeView() {
            if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.photoLibrary) {
                let picker = UIImagePickerController()
                picker.modalPresentationStyle = UIModalPresentationStyle.popover
                picker.delegate = self
                picker.sourceType = UIImagePickerControllerSourceType.photoLibrary
                self.present(picker, animated: true, completion: nil)
            }
        }
    
        /*
         * 吉岡里帆ちゃんが選ばれたときに呼ばれる
         */
        func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
            guard let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage else { return }
            var imageType: ImageType = .jpg
            // カメラのときはURLがないのでjpgを渡す
            if let imageURL = info[UIImagePickerControllerReferenceURL] as? URL {
                imageType = imageURL.imageTypeForExtention() ?? .jpg
            }
            print(imageType.rawValue)
            //適当に画像と拡張子を渡しておくとか
            //PhotoViewModel.sharedInstance.photo.value = (pickedImage, imageType)
            // 閉じてから画面遷移しとくとか
            //picker.dismiss(animated: true) {
              //  self.performSegue(segue: .toGenerate, sender: nil)
            //}
        }
    
        /*
         * カメラを起動する(吉岡里帆ちゃんじゃない)
         */
        private func showCameraView() {
            if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera) {
                let picker = UIImagePickerController()
                picker.modalPresentationStyle = UIModalPresentationStyle.fullScreen
                picker.delegate = self // UINavigationControllerDelegate と UIImagePickerControllerDelegateを実装する
                picker.sourceType = UIImagePickerControllerSourceType.camera
                self.present(picker, animated: true, completion: nil)
            }
        }
    }
    

    데모





    요약


  • URL Extension에서 imageTypeForExtention() 에서 확장자를 얻을 수있었습니다! !

  • 관련 기사



  • 【swift】tableView에 아무것도 없으면 요시오카 리호 짱이 출현한다 <- 이쪽도 함께 부디
  • 좋은 웹페이지 즐겨찾기