【发布时间】:2018-11-23 11:51:01
【问题描述】:
为什么这种转换无法产生相同的图像数据?
let path = Bundle(for: type(of: self)).url(forResource: "Image", withExtension: "jpg")
inputData = try! Data(contentsOf: path!)
let testImage = UIImage(data: inputData)
let testImageData = UIImageJPEGRepresentation(testImage!, 1.0)
expect(testImageData).to(equal(inputData))
据我了解UIImageJPEGRepresentation 和UIImagePNGRepresentation can strip the image of meta data。是这个原因吗?
【问题讨论】:
-
我认为问题不在于
UIImageJPEGRepresentation函数,而在于UIImage构造。很难推断UIImageinternals 的内容要提到它最有可能将 jpeg 解压缩为某种位图格式。因此,将其转换回 jpeg 并不能保证具有相同的数据。顺便说一句,你想用这段代码测试什么? -
感谢@ilya。这只是我简化的测试目标的摘录,但总的来说,我想看看我是否能取回我在某个时候保存的相同图像。
-
此外,源文件可以有很多不同的特性,比如隔行扫描等。这种信息很可能在创建
UIImage对象时被删除。一般来说,无法保证此类转化链具有相同的数据。 -
对于您的任务,您需要找到另一种方法来识别图像对象,例如一些命名约定(使用 UUID 作为文件名)或更复杂的数据结构。此外,比较二进制数据对象的性能可能不如您的需要。
标签: ios uiimage uikit uiimagepngrepresentation