2012-05-17 32 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。

相关问题