CGImageDestinationAddImage臭虫在iOS的11
问题描述:
在应用程序中,下面的代码只是在IOS版本工作得很好9.3.5 - 10.3.x中一个的UIImage转换为TIFF:CGImageDestinationAddImage臭虫在iOS的11
func convertUIImageToTIFF(uiImage: UIImage) -> NSData {
let propertiesTiff: [NSString: AnyObject] = [
kCGImagePropertyTIFFXResolution: 200 as AnyObject,
kCGImagePropertyTIFFYResolution: 200 as AnyObject,
kCGImagePropertyTIFFCompression: 4 as AnyObject
]
let properties: [NSString: AnyObject] = [
kCGImagePropertyDepth: 1 as AnyObject,
kCGImagePropertyTIFFDictionary: propertiesTiff as AnyObject
]
let mutableData: CFMutableData = NSMutableData()
if let imageDestination = CGImageDestinationCreateWithData(mutableData, kUTTypeTIFF, 1, nil), let cgImage = uiImage.cgImage {
CGImageDestinationAddImage(imageDestination, cgImage, properties as CFDictionary?)
CGImageDestinationFinalize(imageDestination)
}
return NSData(data: mutableData as Data)
}
这导致了一个NSData对象是显然是被压缩的,这可以通过其字节数(根据图像内容在50kb和220kb之间)来看到。
由于iOS 11 Beta(在Beta 9上测试过),添加TIFF属性并应用压缩不再有效:开始发送的tiff文件大约8Mb,并且不包括XResolution标头(在发送的数据中到使用Alamofire的服务器)。
任何帮助表示赞赏。
更新:问题依然存在于Beta 10和GM上。
答
我有类似的问题,并向苹果公司报告了一个错误,并附有该主题的链接。
我们看到这个无法正确生成带有透明bg的动画gif。 –
我也在苹果开发者论坛上发布了这个问题,直到今天还没有回应:[link] https://forums.developer.apple.com/message/258103#258103 – Thomas
这里也有类似的情况。我能够使用类似的代码创建gif,但在iOS 11中,它只是创建一个空白图像。你有没有找到工作? –