2016-10-19 6 views
-1

Я пытаюсь преобразовать свой UIImage из UIImageView в строку, поскольку данные хранятся как Base64. Я использую метод, приведенный ниже, для преобразования изображения, но он падает при попытке обновить convertStr.Получение ошибки при преобразовании UIImage в NSSString через NSData

func convertImg() { 
    let imageData: NSData = UIImagePNGRepresentation(imageView.image!)! as NSData 
    convertedStr = NSString(data: imageData as Data, encoding: String.Encoding.utf8.rawValue)! 
} 

Эта функция относится к версии 10, поскольку я пробовал разные способы, но результат всегда один и тот же. Ошибка Возвращается

'fatal error: unexpectedly found nil while unwrapping an Optional value' and

'function signature specialization) ->() to @callee_owned (@unowned Swift.UnsafeBufferPointer) -> (@out()), Argument Types : [@callee_owned (@unowned Swift.UnsafeBufferPointer) ->()]> of generic specialization of Swift.StaticString.withUTF8Buffer ((Swift.UnsafeBufferPointer) -> A) -> A'

Может быть, что метод я использую требует файл PNG и не будет работать с UIImage?

+2

(NS) данных имеет 'base64EncodedString)' метод (который может быть то, что вы ищете. - Интерпретация данных пикселов как строки UTF-8 может только завершиться неудачей. –

+0

необходимо разместить изображение на сервере? – KKRocks

+0

проверить это: http://stackoverflow.com/questions/11251340/convert-between-uiimage-and-base64-string?answertab=votes#tab-top – KKRocks

ответ

1

В Swift

Кодировать в быстрой 2,0 и ниже

let image : UIImage = UIImage(named:"imageNameHere")! 
//Now use image to create into NSData format 
let imageData:NSData = UIImagePNGRepresentation(image)! 

let strBase64:String = imageData.base64EncodedStringWithOptions(.Encoding64CharacterLineLength) 

Декодирование

let dataDecoded:NSData = NSData(base64EncodedString: strBase64, options: NSDataBase64DecodingOptions(rawValue: 0))! 
let decodedimage:UIImage = UIImage(data: dataDecoded)! 
print(decodedimage) 
yourImageView.image = decodedimage 
+0

Это сработало, спасибо – user616076

1
func convertImg() { 
    let imageData: NSData = UIImagePNGRepresentation(imageView.image!)! as NSData 
    convertstr = imageData.base64EncodedString(options: lineLength64Characters) 

}