我试图使用
CGImageSourceCreateWithData
CGImageDestinationCreateWithData
然后
CGImageDestinationAddImageFromSource
但这会丢弃原始文件中的所有缩略图或其他嵌入信息。我想要做的是读取文件,更改其元数据,并仅使用更改将其写出。但我会满足于从中读取所有内容,然后再将其重新放回原处。现在,一个1.2MB的图像文件被转换为437kB的文件而丢失了额外的数据。
我可以使用除CGImage之外的其他东西吗?甚至可以使用iOS API完成这项工作吗?
答案 0 :(得分:0)
您遇到的问题是元数据的结构取决于您使用的特定JPEG文件格式。
您需要查看CGImageProperties。您将不得不确保复制特定文件格式的属性。
答案 1 :(得分:0)
我所寻找的是对图像文件的读取 - 修改 - 写入操作,该操作允许更改但以其他方式保持未更改的数据。我通过研究和测试确定这在iOS中是不可能的。最接近的机制是CGImage处理,但这只允许您从源图像(如图像,缩略图,属性)中读取所选信息,然后使用其中一些信息(图像,属性)来创建新的目标文件。没有办法在新目标文件中包含缩略图,也无法绕过重新压缩图像。