将图像作为base64EncodedString(Swift3)上传到服务器

时间:2017-02-25 06:32:16

标签: ios swift3

我试图通过将图像转换为base64编码的字符串来将图像上传到服务器。 以下是转换代码:

  

让imageData:NSData = UIImagePNGRepresentation(self.selImage!)!作为NSData

     

var base64String = imageData.base64EncodedString(options:NSData.Base64EncodingOptions(rawValue:0))

     

self.panBaseStr = base64String

我从服务器收到错误:

有效负载过高

这是由于一个很大的base64字符串。

当我尝试打印base64编码的字符串时,需要花费太多时间。有什么具体原因吗?

如何缩小编码字符串?

我在模拟器上运行此代码,XCODE版本为8,并使用Alamofire进行API调用。

  

请注意:要求是将图像作为编码字符串发送到服务器而不是图像文件。

2 个答案:

答案 0 :(得分:0)

让strBase64 = imageData.base64EncodedStringWithOptions(.allZeros)

此链接可能对您有所帮助 Convert between UIImage and Base64 string

答案 1 :(得分:0)

是的,您可以使用UIImageJPEGRepresentation代替UIImagePNGRepresentation来缩减它。

PNG使用无损压缩,使图像与原始图像完全相同。 JPEG使用有损压缩,生成的图像是原始图像的近似值。即使JPEG也提供了图像质量的中等保证。因此,您可以尝试使用以下代码而不是您的代码

    UIImageJPEGRepresentation(self.selImage, 1.0)   // QUALITY min = 0 / max = 1