web-dev-qa-db-ja.com

swiftで画像をBASE64文字列に変換する

ユーザーが自分の写真から選択するか、カメラから新規取得する画像を変換しようとしています。画像をbase64文字列に変換できますが、問題は時間がかかりすぎて長い無限文字列を出力することです

これは私が得ている文字列の出力です

enter image description here

これが私のコードです:

// Image picker from Gallery
    func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {
        imagePicker.dismissViewControllerAnimated(true, completion: nil)
        profileImage.image = image

    }

    // Image Picker from Camera

    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
        imagePicker.dismissViewControllerAnimated(true, completion: nil)
        profileImage.image = info[UIImagePickerControllerOriginalImage] as? UIImage

        addPicBtn.setImage(nil, forState: .Normal)

        let imageData:NSData = UIImagePNGRepresentation(profileImage.image!)!
        let imageStr = imageData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
        print(imageStr)


    }
6

実際には変換に時間はかかりませんが、印刷には時間がかかるので、印刷しないでください...

11
Sagar Snehi

このコードを適用できます

let imageData: Data? = UIImageJPEGRepresentation(getImage(), 0.4)
let imageStr = imageData?.base64EncodedString(options: .lineLength64Characters) ?? ""
print(strBase64)
9
Yogendra Girase

Swift 4バージョン。この単純な関数は私にはうまくいきました。これを使用してデコードされた画像を確認しました: https://codebeautify.org/base64-to-image-converter これが誰かを助けることを願っています。

public static func  convertImageToBase64String(image : UIImage ) -> String 
{
    let strBase64 =  image.pngData()?.base64EncodedString()
    return strBase64!
}
2
Paulo Alb

最初に画像拡張子を確認してください。

// .png

    guard let imageData = UIImagePNGRepresentation(UIImage) else {
        return ""
    }

// .JPEG

   guard let imageData = UIImageJPEGRepresentation(UIImage, 1) else {
                return ""
    }

// BASE 64

  imageData.base64EncodedString()
1
Arjun Patel
let imageData: Data? = UIImageJPEGRepresentation(YourImage, 0.4)
let imageStr = imageData?.base64EncodedString(options: .lineLength64Characters) ?? ""
print(imageStr,"imageString")

After printing imageStr you will huge output like in this attached image below, it means you are done successfully.

0
Raghib Arshi