2017-09-04 170 views
2

在應用程序中,下面的代碼只是在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中,它只是創建一個空白圖像。你有沒有找到工作? –

回答

0

我有類似的問題,並向蘋果公司報告了一個錯誤,並附有該主題的鏈接。