Строка Base64 для UIImage - PullRequest
       18

Строка Base64 для UIImage

0 голосов
/ 06 октября 2018

Я пытаюсь декодировать строку base64 в UIImage в Swift.

Кодированная строка для моего образца изображения начинается с:

data: image / jpeg; base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKC...

Полную кодированную строку можно увидеть по адресу: строка base64

Я использую следующую функцию, чтобы декодировать это в изображение:

func ConvertBase64StringToImage (imageBase64String:String) -> UIImage {
    let imageData = Data.init(base64Encoded: imageBase64String, options: .init(rawValue: 0))
    let image = UIImage(data: imageData!)
    return image!
}

Если я вызову эту функцию со строкой выше в качестве параметра, произойдет ошибка, сообщающая, что imageData равен нулю (Неустранимая ошибка: неожиданно обнаружен ноль при развертывании необязательного значения).

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 06 октября 2018

Это не обычная строка в кодировке base64.Это URL-адрес данных, который начинается с data:image/jpeg;base64.

. Вы хотите что-то вроде:

func ConvertBase64StringToImage (imageBase64String:String) -> UIImage? {
    if let url = URL(string: imageBase64String) {
        do {
            let imageData = try Data(contentsOf: url)
            let image = UIImage(data: imageData)
            return image
        } catch {
            print(error)
        }
    }

    return nil
}

Обратите внимание, что вы должны сделать это возвращать необязательное изображение для обработки ошибок.

Если вам нужно обрабатывать эти типы строк в дополнение к «обычным» строкам в кодировке base64, вы можете увидеть, имеет ли imageBase64String префикс data: или нет, и действовать соответствующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...