0

我正在尝试一个简单的 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 )。

在此处输入图像描述

4

2 回答 2

0

要以 PNG 和 JPEG 以外的格式生成图像,请使用 CGImageDestination。

于 2012-05-18T17:20:36.567 回答
0

这里有两件事分开进行,读取各种图像格式并保存图像。UIImage可以读取列出的任何格式。所以打开 .bmp 或 .tiff 就可以了。

再次保存该数据时,您有两个内置选项UIImagePNGRepresentationUIImageJPEGRepresentation,每个选项都采用 aUIImage并将其转换为图像的 PNG 或 JPEG 表示形式。您从这两个函数中的NSData任何一个获得的 都可以写入数据库(或者更常见的是我们在其他问题上讨论的文件),然后再读回。如果您想将文件另存为 BMP、TIFF 或其他格式,您需要找到执行此操作的库。

所以不管你从什么开始,你仍然可以在你的应用程序中将它保存为 PNG(无损)或 JPEG(有损)文件。当然,如果您打开 BMP 并将其另存为 PNG,质量会略有下降,因为您正在创建新一代图像,但几乎在所有情况下都不会引起注意。

希望有帮助。

于 2012-05-18T17:18:44.217 回答