Я делаю простую задачу уменьшения размера файла изображения, но получил эту проблему. При использовании опции «Без потерь» для JPEG-файлов размер файла утроился, а затем исходные NSData для изображения (такое же разрешение). Любое предложение?NSData to UIImage назад к NSData размер полученной длины втрое
Вот простой код:
let data = someImageData
print(data.length)
let image = UIImage(data: data)!
let newImageData = UIImageJPEGRepresentation(image, 1)
print(newImageData.length)
let newImageData = UIImageJPEGRepresentation(image, 0.8)
print(newImageData.length)
и выход:
2604768 //original length
8112955 //new length if compression = 1
2588870 //new length if compression = 0.8
Кажется, я должен принять потерю 0,8 качества, чтобы получить такую же длину данных. Я что-то пропустил? Помогите пожалуйста.
Редактирование: я сделал еще несколько тестов, преобразовывая данные в UIImage, а затем в UIImageJPEGRepresentation (изображение, 1) размер длины новых данных увеличивается с каждым циклом. Но если я использую UIImageJPEGRepresentation (изображение, 0,8), размер длины новых данных немного уменьшается (очень мало), однако составная потеря должна быть проблемой.
Я сделал некоторые поиск снова и нашел этот вопрос на так: http://stackoverflow.com/questions/11500396/converting-uiimage-to-nsdata-with- uiimagejpegrepresentaion-and-saving-it-to-a? rq = 1 Однако он еще не решен даже после более чем четырех лет ... – JDG