Можно ожидать, что UIImage - это объект, отформатированный для отображения, и поэтому он не будет использовать исходные данные (которые, вероятно, в формате PNG или JPEG), но, скорее, массив пикселей или какой-либо другой внутренний формат. Другими словами, UIImage(data: foo)
не сохранит foo
.
Если вы просто хотите использовать его в другом месте вашей программы, оригинальный UIImage будет работать хорошо (я полагаю, что это не так)
Если вы хотите сериализоваться, UIImagePNGRepresentation(...)
будет работать, но будет больше, если оригинал был в формате JPEG; UIImageJPEGRepresentation(...)
часто приводит к небольшому превышению размера данных и незначительным потерям, если ваш оригинал был PNG. Следует выбрать один из них в зависимости от способа отображения изображения и ожидаемого формата. Если вы используете PNG и хотите PNG, вы должны получить хороший размер файла и почти идентичные данные, за исключением специальных фрагментов PNG.
Если вы хотите получить точную копию исходных данных (возможно, сохранить файл после миниатюры или сохранить его в SHA1), вам необходимо сохранить его отдельно. Вы можете сделать что-то вроде:
var image:UIImage
var imageData:NSData {
didSet {
image = UIImage(data: imageData)
}
}