我很好奇是否有公共或私有API让我了解任何给定的UIImage使用多少内存?有谁知道如何可靠地获得它的尺寸?
答案 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 * 3
或width * height * 4
。
答案 1 :(得分:-1)
Joe说,这将为您提供图像的字节数,除非“图像没有数据或底层CGImageRef包含不支持的位图格式的数据。”
NSData *imageData = UIImagePNGRepresentation(image)
if (imageData)
{
NSUInteger numBytes = [imageData bytes];
}