我将优化我的应用的内存使用情况。 我的应用程序有很多带有图形的UI,它占用了大量的设备内存。
我尝试使用16位图像而不是32位图像。 我的OpenGL纹理的内存消耗减少了。 但是,我发现UIImage保存的图像消耗的内存量与32位图像相同。
无论像素格式是16位还是32位,UIImage是否都使用每像素8位来存储图像? 或者我可以做wt减少16位图像的内存消耗??
非常感谢。
答案 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。