我正在尝试一个简单的iPhone应用程序,其中一个人可以从他们的iPhone PhotoLibrary中的现有照片中选择一张照片。将所选图像存储到SQLite DB中,如下所示:
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)。
答案 0 :(得分:0)
这里有两件事分开,阅读各种图像格式并保存图像。 UIImage
可以阅读列出的任何格式。所以打开一个.bmp或.tiff就可以了。
在再次保存这些数据时,您有两个内置选项UIImagePNGRepresentation
和UIImageJPEGRepresentation
,每个选项都会UIImage
并将其转换为PNG或JPEG图像的表示。从这两个函数中的任何一个得到的NSData
都可以写入数据库(或者更常见的是写入我们在另一个问题上讨论的文件),然后再读回来。如果您想将文件保存为BMP,TIFF或其他文件,则需要找到执行此操作的库。
所以你开始使用它并不重要,你仍然可以将它保存为应用程序中的PNG(无损)或JPEG(有损)文件。当然,如果你打开一个BMP并将其保存为PNG,那么由于你正在创建新一代的图像,会有轻微的质量损失,但几乎在所有情况下它都是不明显的。
希望有所帮助。
答案 1 :(得分:0)
要以PNG和JPEG以外的格式生成图像,请使用CGImageDestination。