На самом деле функция UIImage.length здесь не возвращает неправильное значение, это просто результат преобразования/возврата с потерями из UIImage в NSData.
Установка CompressQuality на минимально возможное сжатие 1,0 в UIImageJpegRepresentation не вернет исходное изображение. Хотя в этом процессе метаданные изображения удаляются, функция может и обычно будет давать объект большего размера, чем оригинал. Обратите внимание, что это увеличение размера файла НЕ также не повышает качество изображения по сравнению со сжатым оригиналом. JPEG изначально сильно сжаты, поэтому они так часто используются, и функция распаковывает их, а затем повторно сжимает. Это похоже на введение ботокса после того, как возраст растянул ваше тело, он может выглядеть как оригинал, но внутренности уже не так хороши, как раньше.
Вы можете условно использовать более низкое качество сжатия для больших файлов, близкое к 1,0, так как качество быстро упадет. Помимо этого, в зависимости от конечной цели ваших изображений, единственным другим вариантом будет изменение размера изображения или настройка его разрешения, возможно, в дополнение к настройке коэффициента сжатия. Это изменение экспоненциально сократит использование данных. Использование в Интернете и на мобильных устройствах обычно не требует такого разрешения, как изображения, предназначенные для цифровой печати.
Вы можете написать некоторый код, который настраивает каждое изображение и представление NSData настолько, насколько это необходимо, чтобы соответствовать его индивидуальному ограничению данных.
person
Ataraxia64
schedule
11.06.2014
.length
? Если 0,data
неnil
? - person Todd Lehman   schedule 02.06.2014