在Swift中将图片转换为BASE64字符串

7
我正在尝试将用户从他的照片库中选择的图像或从相机中拍摄的新图像转换为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)


    }

由于它正在进行转换,所以需要一些时间,但上传带有base64文本的图像时不应受到影响。 - Sachin Vas
你现在想做什么?我的意思是你遇到了什么问题?你可以从下面的链接检查Base64字符串是否正确编码:http://codebeautify.org/base64-to-image-converter - Dhiru
@dhiru 在将其转换为字符串时,需要花费很长时间。 - Jayesh Gyanchandani
5个回答

13

实际上,转换并不需要太多时间,但如果打印的话会花费更多时间,因此请不要打印它...


我希望将此字符串添加到数据库中。 - Jayesh Gyanchandani
2
您可以直接添加。这不会花很多时间。 - Sagar Snehi
1
如果您想要较低质量的图像,请使用UIImageJPEGRepresentation(imagePicked,0.5)!然后字符串值将变小,为了加载,请使用dispatch_async方法并显示加载旋转器,直到图像出现... - Sagar Snehi
你能告诉我如何将字符串解码成图像吗? - Jayesh Gyanchandani
让 dataDecoded:NSData = NSData(base64EncodedString: strBase64, options: NSDataBase64DecodingOptions(rawValue: 0))! 让 decodedimage:UIImage = UIImage(data: dataDecoded)! print(decodedimage) yourImageView.image = decodedimage - Sagar Snehi
显示剩余4条评论

9
您可以应用此代码。
let imageData: Data? = UIImageJPEGRepresentation(getImage(), 0.4)
let imageStr = imageData?.base64EncodedString(options: .lineLength64Characters) ?? ""
print(strBase64)

这将降低图像的质量。 - Sagar Snehi

3

这是适用于Swift 4版本的简单函数,对我来说效果很好。使用此功能确认解码图像后,可以使用此链接将其转换为原始图像:https://codebeautify.org/base64-to-image-converter 希望这能帮助到有需要的人。

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

0
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.


这个输出意味着我们已成功将图像转换为字符串。 - Raghib Arshi

0

首先确保您的图像扩展名正确。

// .png

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

// .JPEG

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

// BASE 64

  imageData.base64EncodedString()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接