如何确定特定UIImage使用的RAM量?

时间:2012-02-24 17:56:07

标签: objective-c

我很好奇是否有公共或私有API让我了解任何给定的UIImage使用多少内存?有谁知道如何可靠地获得它的尺寸?

2 个答案:

答案 0 :(得分:1)

UIImage的数据将作为解压缩数据存储在内存中,因此您可以忽略检查UIImagePNGRepresentation等字节长度的建议。

最简单的解决方案是抓住CGImageRef并使用此代码:

- (size_t)byteSizeForImage:(UIImage *)image {
    CGImageRef imageRef = image.CGImage;

    size_t bitsPerPixel = CGImageGetBitsPerPixel(imageRef);
    size_t bitsTotal =  CGImageGetWidth(imageRef) * CGImageGetHeight(imageRef) *
                            bitsPerPixel;
    size_t bytesTotal = bitsTotal / 8;
    return bytesTotal;
}

大多数情况下,您的图像将是RGB(每像素3个字节)或RGBA(每个像素4个字节),因此通常可以是width * height * 3width * height * 4

答案 1 :(得分:-1)

Joe说,这将为您提供图像的字节数,除非“图像没有数据或底层CGImageRef包含不支持的位图格式的数据。”

NSData *imageData = UIImagePNGRepresentation(image)
if (imageData)
{
    NSUInteger numBytes = [imageData bytes];
}