如何使用UIImage加载16位图像?

时间:2012-03-02 06:27:20

标签: objective-c ios uiimage

我将优化我的应用的内存使用情况。 我的应用程序有很多带有图形的UI,它占用了大量的设备内存。

我尝试使用16位图像而不是32位图像。 我的OpenGL纹理的内存消耗减少了。 但是,我发现UIImage保存的图像消耗的内存量与32位图像相同。

无论像素格式是16位还是32位,UIImage是否都使用每像素8位来存储图像? 或者我可以做wt减少16位图像的内存消耗??

非常感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用cgdata提供程序

CGDataProviderRef imgDataProvider = CGDataProviderCreateWithCFData((CFDataRef)[NSData dataWithContentsOfFile:@"some_file.png"]);

然后使用

CGImageRef CGImageCreate (
   size_t width,
   size_t height,
   size_t bitsPerComponent,
   size_t bitsPerPixel,
   size_t bytesPerRow,
   CGColorSpaceRef colorspace,
   CGBitmapInfo bitmapInfo,
   CGDataProviderRef provider,
   const CGFloat decode[],
   bool shouldInterpolate,
   CGColorRenderingIntent intent
);

功能,为尺寸,每像素位设置所有适当的值,并使用在第一步中创建的数据提供程序。

然后通过[UIImage imageWithCGImage:]方法从CGImageRefs中获取UIImage。