Закодированная строка не работает в Swift

В моем быстром приложении мне нужно преобразовать изображение как строку, а затем отправить на сервер, то есть POST. Затем, если мне нужно получить, я не хочу декодировать это. Ответ, имеющий имя и путь к файлу изображения.

ONline конвертер:

Если я преобразую образец изображения через онлайн-конвертер, ЗДЕСЬ. Я получаю следующую строку. Если я передам эту строку в API, я смогу получить изображение успешно.

Выход:

iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR......... CIBhIIgQRCIIEQSCAQAgmEQAIhkEAIJBAIgQRCIIEQSCAEEgiEQAIhkEAIJCgN / F + AAQAXoGXl + IGgwwAAAABJRU5ErkJggg ==

Через мое кодирование

Если я преобразую образец изображения с помощью Coding, я получаю следующую строку. Если я передам эту строку в API, успешно добавлю. Но я не могу просмотреть это изображение вручную в браузере.

More Over,, Две строки вывода не совпадают. Я не знаю почему? Пожалуйста, направьте меня, как решить эту проблему?

Код:

var image : UIImage = UIImage(named: "home_recharge.png")!
        var imageData = UIImagePNGRepresentation(image)
        let base64String = imageData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.allZeros)
        println("base64String    \(base64String)")

Выход:

iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAAAXNSR0IArs4c6QAAABxpRE9UAAAAAgAAAAAAAABIAAAAKAAAAEgAAABIAAAKygzM7MwAAAqWSURBVHgB7FwJ0JZDHC9yhJTkLuRMjuQ + opAr5zjGqAwZx............. FlIs5ASSDNQLA7EMtYMpBlICaQZKBYHYhlrBtIMpATSDBSLA7GMNQNpBlICaQaKxYFYxpqBNAMpgTQDxeJALGPNQJqBlECagWJxIJaxZiDNQP8B + 6MkTad9NtcAAAAASUVORK5CYII =

1 ответ

Решение

Вы используете представление PNG изображения, но сервер сохраняет изображение с .jpg расширение, поэтому браузер пытается прочитать изображение в виде файла JPEG и не удается.

Вы должны заменить UIImagePNGRepresentation с UIImageJPEGRepresentation или сохранить изображение с .png расширение.

Причина, по которой браузер может открыть изображение результата онлайн-конвертера, несмотря на то, что у него неправильное расширение, заключается в том, что UIImagePNGRepresentation удаляет изображение своих метаданных, а онлайн-конвертер не так, чтобы браузер не мог определить реальный тип изображения с неправильным расширением без метаданных.

Другие вопросы по тегам