NSData и UIImage
Я пытаюсь загрузить UIImage
объект NSData
, и пример кода было NSImage
, Я думаю, они должны быть одинаковыми. Но только сейчас загружая изображение, мне интересно, что лучше всего для устранения неполадок UIImage
загрузка NSData
вопрос.
5 ответов:
UIImage имеет -
initWithData:
метод. Из документов: "данные в параметре data должны быть отформатированы в соответствии с форматом файла одного из поддерживаемых системой типов изображений."
Я не пробовал
UIImageJPEGRepresentation()
раньше, ноUIImagePNGRepresentation
отлично работает для меня, и преобразование междуNSData
иUIImage
умерла просто:NSData *imageData = UIImagePNGRepresentation(image); UIImage *image=[UIImage imageWithData:imageData];
попробуйте это, чтобы преобразовать изображение в NSdata:
UIImage *img = [UIImage imageNamed:@"image.png"]; NSData *data1 = UIImagePNGRepresentation(img);
theData должен быть
NSData
объект, который уже содержит данные. Вам нужно сделать загрузку/загрузку файла вNSData
объект перед его использованием. Вы можете проверить его с помощьюNSLog
на theData и посмотреть, если он содержит допустимые данные.
для безопасного выполнения кода используйте блок if-let с данными, так как функция UIImagePNGRepresentation возвращает необязательное значение.
if let img = UIImage(named: "Hello.png") { if let data:Data = UIImagePNGRepresentation(img) { // Handle operations with data here... } }
Примечание: сведения это Swift 3 класса. Используйте данные вместо NSData с помощью Swift 3
общие операции с изображениями (например, png и jpg):
if let img = UIImage(named: "Hello.png") { if let data:Data = UIImagePNGRepresentation(img) { handleOperationWithData(data: data) } else if let data:Data = UIImageJPEGRepresentation(img, 1.0) { handleOperationWithData(data: data) } } ******* func handleOperationWithData(data: Data) { // Handle operations with data here... if let image = UIImage(data: data) { // Use image... } }
С помощью расширения:
extension UIImage { var pngRepresentationData: Data? { return UIImagePNGRepresentation(img) } var jpegRepresentationData: Data? { return UIImageJPEGRepresentation(self, 1.0) } } ******* if let img = UIImage(named: "Hello.png") { if let data = img.pngRepresentationData { handleOperationWithData(data: data) } else if let data = jpegRepresentationData { handleOperationWithData(data: data) } } ******* func handleOperationWithData(data: Data) { // Handle operations with data here... if let image = UIImage(data: data) { // Use image... } }