2012-05-17 33 views
0

我嘗試了一個簡單的iPhone應用程序,其中人們可以從他們的iPhone PhotoLibrary中的現有照片中選擇一張照片。我將選定的圖像存儲到SQLite數據庫中,如下所示:支持各種圖像格式,並強大它們在sqlite

 NSData *imageData = UIImagePNGRepresentation(image);   
     sqlite3_bind_blob(statement, 1, 
          [imageData bytes], [imageData length], NULL); 

上述內容僅適用於PNG。而在UIKit API中,對於JPG只有類似的轉換(從UIImage到NSData)。我如何爲其他格式的圖像(如bmp,tiff,gif等)執行此操作?在UIImage類中,它說它支持多種格式,但轉換方法只提供給png & jpg(UIImagePNGRepresentation和UIImageJPEGRepresentation)。

enter image description here

+0

對此有任何幫助嗎?任何指針至少? – Jean

回答

0

你有兩件事情分開會在這裏,閱讀各種圖像格式並保存圖像。 UIImage可以閱讀列出的任何格式。所以打開一個.bmp或.tiff,你會沒事的。

當談到了再次保存這些數據,你有兩個內置選項,UIImagePNGRepresentationUIImageJPEGRepresentation,每個採取UIImage並將其轉換成無論是PNG或圖像的JPEG表示。您從這兩個函數中獲得的NSData可以寫入數據庫(或者更常見的是像我們在其他問題上討論的那樣,將文件寫入文件),然後再回讀。如果您想將文件保存爲BMP,TIFF或其他文件,則需要找到可以執行此操作的庫。

因此,無論您開始使用什麼,您仍然可以將它保存爲應用程序中的PNG(無損)或JPEG(有損)文件。當然,如果您打開一個BMP並將其保存爲PNG格式,則會產生較小的質量損失,因爲您正在創建新一代圖像,但幾乎在所有情況下都不會引起注意。

希望有所幫助。

0

要使用非PNG和JPEG格式生成圖像,請使用CGImageDestination。

相關問題