我将优化我的应用程序的内存使用情况。我的应用程序有许多带有图形的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。