Закодированная строка не работает в 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 удаляет изображение своих метаданных, а онлайн-конвертер не так, чтобы браузер не мог определить реальный тип изображения с неправильным расширением без метаданных.