Данные
A 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
.