如何使用UIImage加载16位图像



我将优化我的应用程序的内存使用情况。我的应用程序有许多带有图形的UI,这些UI占用了设备的大部分内存。

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

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

非常感谢。

您可以使用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。

最新更新