2011-06-27 105 views
2

在iPhone應用程序中,我使用標準HTTP請求從服務器加載JPG圖像。數據以NSData形式返回,我可以使用[UIImage imageWithData:responseData]函數將其轉換爲UIImage。我的問題是,我可以將我的圖像的UIImage表示形式轉換回源於它的相同NSData嗎?我知道關於UIImageJPEGRepresentation()函數,但我試着壓縮質量爲1,這給了我不同於原始NSData的東西。逆向NSData到UIImage轉換?

回答

3

我認爲(猜測,實際上)你的問題可能是因爲UIImage內部沒有以JPEG格式存儲。由於JPEG壓縮方式的作用,轉換回JPEG格式不太可能會給你完全相同的數據。是否有任何理由不能保持原有的NSData?

+0

我想這個問題類似於用PhotoShop重複打開和保存JPG。有損壓縮化合物,你永遠不會有相同的圖像。不想堅持NSData的原因是CoreData的性能(將其存儲爲BLOB)。但是,我剛剛遇到了http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/CoreData/Articles/cdPerformance.html,它概述了我的問題的解決方案。感謝您的輸入。 – chris

2

您應該使用UIImagePNGRepresentation(),並將文件作爲PNG發送到設備。 PNG在裝置上加載和保存效率更高。這是將字節數組(NSData)轉換爲圖像/從圖像轉換而來的standard method

如果您被JPEG數據卡住,UIImageJPEGRepresentation()是將其恢復到NSData對象的正確方法。它可能不完全相同,這取決於Apple如何實現該方法,它可以在技術上仍然是相同的圖像(會呈現相同的)時更新一些數據。

+0

我同意..但不幸的是我的網絡服務器上的源代碼是JPEG,我想將UIImage轉換回原始下載的相同NSData表示。 – chris

+0

jpeg – RyanR

+0

更新回答我相信你說得對,創建的JPEG不是完全相同的,但這是問題所在。我擔心複合有損壓縮。我認爲唯一的解決方案是存儲我正在做的NSData。感謝您的迴應。 – chris