如何压缩多个数据而不是多个图像?

时间:2019-01-08 07:17:47

标签: ios swift

我正在尝试将数据压缩到内存中。我使用Gzip框架可以正常工作,但是我不想存储单个图像数据。我想发送10个以上的图像数据以追加到可变数据中并尝试压缩。但是问题是GZIp函数返回了Data。如何附加多个图像数据并调用Gzip函数。

GZIp用于压缩单个图像数据的函数:

  

公共函数gzip压缩(级别:Gzip.CompressionLevel =默认)引发   ->数据

这是我的压缩两个图像数据的代码:

let image = UIImage(named: "test")
let image2 = UIImage(named: "test12")
var sampleDataOne = image2?.jpegData(compressionQuality: 1.0)
var sampleDataTwo = image?.jpegData(compressionQuality: 1.0)
var zipMutableData = NSMutableData()

do {
      zipMutableData.append(sampleDataOne)
      zipMutableData.append(sampleDataTwo)
      var resultData = try (zipMutableData.gzipped(level: .defaultCompression)) as! NSMutableData
} catch let error{
      print(error)         
}

我收到此错误:

  

'NSMutableData'类型的值没有成员'gzipped'

2 个答案:

答案 0 :(得分:1)

您可以按以下方式Data进行下调,以调用gzipped方法,

var resultData = try (zipMutableData as Data).gzipped(level: .defaultCompression)

示例

let zipMutableData = NSMutableData()

zipMutableData.append("Steve".data(using: .utf8)!)
zipMutableData.append("Jobs".data(using: .utf8)!)

print(String(data: zipMutableData as Data, encoding: .utf8)!)

输出

SteveJobs

答案 1 :(得分:0)

这里没有理由使用NSMutableData。只需使用Data

var zipMutableData = sampleDataOne + sampleDataTwo

分配as! NSMutableData时也没有理由使用resultData。就是Data