我正在开发Swift中的iOS应用程序,供我工作的公司的客户使用。除了iOS应用程序之外,我还使用ASP.Net Core制作后端API。我选择用于发送图像的方法是JSON数组中图像的压缩base64编码字符串表示形式。这是为了节省带宽并使发送多张图像更容易。
在API方面,我使用.NET类System.IO.Compression.DeflateStream
压缩内存中的图像字节,然后再将它们编码为base64字符串并将其发送到iOS应用程序。
在iOS方面,对于将字符串解码并解压缩数据以创建UIImage
对象以显示在UIImageView
中的过程,我有些困惑。
这一切都无需压缩即可使用,但我想尝试一下以节省带宽。但是,这很可能不是最佳解决方案,我很愿意改变。下面是我用来将base64字符串转换为Data
对象,然后从中创建UIImage
对象的代码段。
static func imageComplete(data json: JSON) -> [UIImage] {
var images: [UIImage] = []
for imageString in json.arrayValue {
if let compressedImageData = Data(base64Encoded: imageString.stringValue),
let image = UIImage(data: compressedImageData) {
images.append(image)
}
}
return images
}
TL; DR 在Swift中,我想解压缩从ASP.Net Core WebAPI返回的编码为Base64字符串的图像字节。