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上。

+1

我们看到这个无法正确生成带有透明bg的动画gif。 –

+0

我也在苹果开发者论坛上发布了这个问题,直到今天还没有回应:[link] https://forums.developer.apple.com/message/258103#258103 – Thomas

+0

这里也有类似的情况。我能够使用类似的代码创建gif,但在iOS 11中,它只是创建一个空白图像。你有没有找到工作? –

我有类似的问题,并向苹果公司报告了一个错误,并附有该主题的链接。