编码字符串在 swift 中不起作用
Encoded string is not working in swift
在我的 swift 应用程序中,我需要将图像转换为字符串,然后我需要发送到服务器,即 POST。然后,如果我需要 GET,我不想对其进行解码。具有图像文件名和路径的响应。
在线转换器:
如果我通过在线转换器转换样本图像,HERE.我得到以下字符串。如果我将这个字符串传递给API,我就可以成功获取图像。
输出:
iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR......CIBhIIgQRCIIEQSCAQAgmEQAIhkEAIJBAIgQRCIIEQSCAEEgiEQAIhkEAIJCgN/F+AAQAXoGXl+IGgwwAAAABJRU5ErkJggg==
通过我的编码
如果我通过编码转换示例图像,我将得到以下字符串。如果我将此字符串传递给 API,则添加成功。但是,我也无法在浏览器中手动查看该图像。
更多,,两个输出字符串不相同。我不知道为什么?请指导我,如何解决这个问题?
代码:
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=
您使用 png 图像表示,但服务器使用 .jpg
扩展名保存图像,因此浏览器尝试将图像读取为 JPEG 文件但失败。
您应该将 UIImagePNGRepresentation
替换为 UIImageJPEGRepresentation
或使用 .png
扩展名保存图像。
尽管扩展名错误,但浏览器仍可以打开在线转换器结果图像的原因可能是 UIImagePNGRepresentation 剥离了图像的元数据和在线转换器,因此浏览器无法识别没有元数据的扩展名错误的图像的真实类型数据。
在我的 swift 应用程序中,我需要将图像转换为字符串,然后我需要发送到服务器,即 POST。然后,如果我需要 GET,我不想对其进行解码。具有图像文件名和路径的响应。
在线转换器:
如果我通过在线转换器转换样本图像,HERE.我得到以下字符串。如果我将这个字符串传递给API,我就可以成功获取图像。
输出:
iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR......CIBhIIgQRCIIEQSCAQAgmEQAIhkEAIJBAIgQRCIIEQSCAEEgiEQAIhkEAIJCgN/F+AAQAXoGXl+IGgwwAAAABJRU5ErkJggg==
通过我的编码
如果我通过编码转换示例图像,我将得到以下字符串。如果我将此字符串传递给 API,则添加成功。但是,我也无法在浏览器中手动查看该图像。
更多,,两个输出字符串不相同。我不知道为什么?请指导我,如何解决这个问题?
代码:
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=
您使用 png 图像表示,但服务器使用 .jpg
扩展名保存图像,因此浏览器尝试将图像读取为 JPEG 文件但失败。
您应该将 UIImagePNGRepresentation
替换为 UIImageJPEGRepresentation
或使用 .png
扩展名保存图像。
尽管扩展名错误,但浏览器仍可以打开在线转换器结果图像的原因可能是 UIImagePNGRepresentation 剥离了图像的元数据和在线转换器,因此浏览器无法识别没有元数据的扩展名错误的图像的真实类型数据。