Я могу создавать UIImage
с NSData
помощью методов [UIImage imageWithData:]
или [UIImage initWithData:]
.
Интересно, смогу ли я получить NSData
обратно от существующего UIImage
? Что-то вродеNSData *myData = [myImage getData];
cocoa-touch
uiimage
nsdata
Евгений
источник
источник
UIImageJPEGRepresentation
илиUIImagePNGRepresentation
приведет к изменению данных и выполнению повторного преобразования. Есть ли способ действительно добиться того, о чем просили?При инициализации
UIImage
объекта с помощьюinit(data: originalData)
,originalData
они будут преобразованы в необработанные данные в каком-то внутреннем формате. Эти данные можно получить позже с помощьюОднако, поскольку
rawData
это необработанный файл, он будет даже больше, чем при использованииUIImagePNGRepresentation
.источник
Вы можете ожидать, что UIImage - это объект, отформатированный для отображения, и поэтому не будут использовать исходные данные (которые, вероятно, находятся в формате PNG или JPEG), а скорее будут массивом пикселей или каким-либо другим внутренним форматом. Другими словами,
UIImage(data: foo)
не удержитfoo
.Если вы просто хотите использовать его в другом месте своей программы, исходный UIImage подойдет (я предполагаю, что здесь это не совсем так)
Если вы хотите сериализовать,
UIImagePNGRepresentation(...)
будет работать, но будет увеличен, если оригинал был в формате JPEG;UIImageJPEGRepresentation(...)
часто приводит к небольшому увеличению размера данных и с небольшими потерями, если исходный файл был в формате PNG. Можно выбрать один, исходя из способа отображения изображения и формата, который вы ожидаете предоставить. Если вы используете PNG в и хотите PNG, вы должны получить файл хорошего размера и почти идентичные данные, за исключением специальных фрагментов PNG.Если вы хотите получить точную копию исходных данных (например, для сохранения файла после миниатюры или в SHA1), вам необходимо сохранить ее отдельно. Вы можете сделать что-то вроде:
источник
Просто потому, что наткнулся на это и мне нравится быстрый :)
Вот быстрый перевод сообщения Каройлин.
Или
источник
Swift 4.2
источник
Все изменилось с тех пор, как был дан ответ выше, для тех, кто все еще ищет, потому что они разделяют озабоченность CipherCom: iOS 5 добавила свойство CIImage .
источник
CIImage
устанавливается только в том случае, если оно было инициализировано с помощьюimageWithCIImage:
. Также это не непосредственно используемые данные, а скорее другой объект представления изображения.