2011-09-14 75 views
3

我有一個UIImage,它是一個GIF文件。將UIImage轉換爲NSData但保留爲GIF文件

我需要使它成爲一個NSData對象。 但它需要保留一個GIF,所以我不能使用UIImageJPEGRepresentation。

任何想法?

+1

你的意思是「它需要保持GIF格式」對不對? – Zigglzworth

+0

相關問題[如何在iPhone上保存GIF?](http://stackoverflow.com/questions/1851103/how-to-save-a-gif-on-the-iphone) – Sam

回答

8

我面對你提到的同樣的問題,這是我用來保存GIF動畫,以便照片不失動畫代碼:

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 

NSData *data = [NSData dataWithContentsOfURL:[self getCurrentGIFURL]]; 

[library writeImageDataToSavedPhotosAlbum:data metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) {} 

基本上,如果你從URL或直接從文件保存GIF作爲NSData對象,而不是使它成爲一個UIImage,它會保持動畫。

+0

可以請你提供swift版本嗎? –

2

如果知道文件路徑,可以直接將它加載到NSData *中。如:

NSData *gifData = [NSData dataWithContentsOfFile:@"myCoolPic.gif"]; 

NSData dataWithContentsOfFile docs

+0

這是真的,但它不是很容易悲傷......我無法訪問該文件。 – Cocoadelica

+3

那麼你是如何獲得圖像呢? – darksky

+3

咦?無法訪問該文件絕對不會阻止您將其加載到NSData中......除了查看它,使用它,操作它,以及......做幾乎所有的事情。 – Zigglzworth

12

一旦它的一個UIImage,它不是一個GIF了。它已經被解釋爲一個核心圖形圖像對象,包裹在UIImage的UIKit飾品中。你沒有一個「是GIF」的UIImage。它可能只有一次,但那段時間已經過去了。

如果你正在下載這個東西(我通過你的評論假設「我沒有訪問該文件」),那麼你應該下載它作爲數據,並保存爲數據,如果你做了一個基於這些數據的UIImage,你可能需要保持數據。 (這完全是猜測,因爲你會滴滴答滴地滴滴答滴地提出你的問題的細節,如果你能夠在更大的氣息中說出你想要達成的目標,我們或許可以幫助更好。)

+0

降落在這裏尋找別的東西,但這恰恰回答了我的問題。謝謝 –