2

在我的 swift App 中,我需要将 Image 转换为 String,然后我需要发送到 Server,即 POST。然后,如果我需要 GET,我不想解码。具有图像文件名和路径的响应。

在线转换器:

如果我通过在线转换器转换示例图像,请点击此处。我得到以下字符串。如果我将此字符串传递给 API,我可以成功获取图像。

输出:

iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR.... .....CIBhIIgQRCIIEQSCAQAgmEQAIhkEAIJBAIgQRCIIEQSCAEEgiEQAIhkEAIJCgN/F+AAQAAXoGXl+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=

4

1 回答 1

1

您使用 png 图像表示,但服务器使用.jpg扩展名保存图像,因此浏览器尝试将图像读取为 JPEG 文件并失败。

您应该使用扩展名UIImagePNGRepresentation替换UIImageJPEGRepresentation或保存图像。.png

尽管扩展名错误,浏览器仍可以打开在线转换器结果图像的原因可能是 UIImagePNGRepresentation 剥离了其元数据和在线转换器的图像,因此浏览器无法在没有元数据的情况下识别出具有错误扩展名的图像的真实类型。

于 2015-10-07T06:50:44.347 回答