我试图通过将图像转换为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调用。
请注意:要求是将图像作为编码字符串发送到服务器而不是图像文件。
答案 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