Дополнительно
Получение размера изображения UIImage (длина в байтах), а не высоты и ширины
Я'пытаюсь получить длину UIImage
. Не ширину или высоту изображения, а размер данных.
57
10
Данные, лежащие в основе
UIImage
, могут быть разными, поэтому для одного и того же "изображения" можно иметь данные разного размера. Можно использоватьUIImagePNGRepresentation
илиUIImageJPEGRepresentation
, чтобы получить эквивалентные конструкцииNSData
для любого из них, а затем проверить их размер.Используйте свойство CGImage в UIImage. Затем, используя комбинацию CGImageGetBytesPerRow * CGImageGetHeight, добавьте sizeof UIImage, вы должны быть в пределах нескольких байт от фактического размера.
Это вернет размер изображения без сжатия, если вы хотите использовать его для таких целей, как malloc при подготовке к работе с растровой картой (предполагается, что формат пикселей 4 байта: 3 байта для RGB и 1 для Alpha):
Пример в Стриж:
Это самый быстрый, самый чистый, самый общий и менее подверженный ошибкам способ получить ответ. В категории
объектами UIImage+MemorySize
:Или если вы хотите только фактическое растровое изображение, а не контейнер объектами UIImage экземпляр, то это действительно так просто, как это:
Я не уверен в вашей ситуации. Если вам нужен фактический размер байта, я не думаю, что вы это сделаете. Вы можете использовать UIImagePNGRepresentation или UIImageJPEGRepresentation для получения объекта NSData сжатых данных изображения.
Я думаю, вы хотите получить фактический размер несжатого изображения (данные в пикселях). Вам нужно преобразовать UIImage* или CGImageRef в необработанные данные. Это пример преобразования UIImage в IplImage (из OpenCV). Вам просто нужно выделить достаточно памяти и передать указатель на CGBitmapContextCreate'первый аргумент.
Свифт 3:
При необходимости в читаемую форму, мы можем использовать ByteCountFormatter
Где `типа int64(данные.граф) - это то, что вам нужно в числовом формате.
Свифт 4+
вы можете использовать этот трюк, чтобы выяснить размер изображения.