在 Java 中解码 Base64 百分比编码的图像字符串
Decode Base64 percentage encoded Image String in Java
朋友,
我必须将图像从 IOS 上传到 Java 网络服务器。因此,我的 IOS 程序将图像编码为 Base64 图像格式并对其进行编码,以删除特殊字符的任何问题,如下所示。
let imageData = UIImageJPEGRepresentation(myImageView.image!, 0.5)
let base64String = imageData!.base64EncodedStringWithOptions([])
let encodeImg = base64String.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet()) as String!
然后将编码的图像数据字符串作为 JSON 对象发送到 Web 服务器。
let params = ["image":[ "content_type": "image/jpeg", "filename":"testing", "file_data": base64String]]
do {
let postBody = try NSJSONSerialization.dataWithJSONObject(params, options: NSJSONWritingOptions.init(rawValue: 0))
request.HTTPBody = postBody
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
print("Response: \(response)")})
task.resume()
} catch {
print(error)
}
现在 Java 服务器将 base64 图像数据字符串解码为图像
InputStream stream = new ByteArrayInputStream(Base64.decode(image.getBytes(), Base64.DEFAULT));
并将流写入 image.jpeg 文件。当我们尝试打开文件时,出现 不支持文件格式 错误。
当我尝试打印Base64编码的图像数据字符串时,发现如下。
%2F9j%2F4AAQSkZJRgABAQAASABIAAD%2F4QBMRXhpZgAATU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAAqACAAQAAAABAAAQwKADAAQAAAABAAALIAAAAAD%2F7QA4UGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAAA4QklNBCUAAAAAABDUHYzZjwCyBOmACZjs+EJ+%2F+ICQElDQ19QUk9GSUxFAAEBAAACMEFEQkUCEAAAbW50clJHQiBYWVogB9AACAALABMAMwA7YWNzcEFQUEwAAAAAbm9uZQAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1BREJFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKY3BydAAAAPwAAAAyZGVzYwAAATAAAABrd3RwdAAAAZwAAAAUYmtwdAAAAbAAAAAUclRSQwAAAcQAAAAOZ1RSQwAAAdQAAAAOYlRSQwAAAeQAAAAOclhZWgAAAfQAAAAUZ1hZWgAAAggAAAAUYlhZWgAAAhwAAAAUdGV4dAAAAABDb3B5cmlnaHQgMjAwMCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZAAAAGRlc2MAAAAAAAAAEUFkb2JlIFJHQiAoMTk5OCkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAADzUQABAAAAARbMWFlaIAAAAAAAAAAAAAAAAAAAAABjdXJ2AAAAAAAAAAECMwAAY3VydgAAAAAAAAABAjMAAGN1cnYAAAAAAAAAAQIzAABYWVogAAAAAAAAnBgAAE+lAAAE...
如果我们能注意到,它包含许多百分比“%”符号,因为我使用
base64String.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet()
在 swift 上传之前。
谁能指导我解码百分比编码的图像字符串。
我在 Java 中完成了 link Base64 数据解码。有了它,我们可以解码 base64 字符串,但如何处理百分比编码的字符串。
我想学习解码百分比编码的字符串。请提出您的意见。同时,我尝试上传没有百分比编码的图像,看看我是否可以在 Java 中成功解码它。
非常感谢。
我给你的 swift 中的最后一行是 URL 编码。
因此,您的服务器必须按顺序:URL 解码、Base64 解码并放入 JPG。
不要对图像字符串进行百分比编码。您可以直接发送为 base64EncodedString。 Java可以轻松解码。
朋友,
我必须将图像从 IOS 上传到 Java 网络服务器。因此,我的 IOS 程序将图像编码为 Base64 图像格式并对其进行编码,以删除特殊字符的任何问题,如下所示。
let imageData = UIImageJPEGRepresentation(myImageView.image!, 0.5)
let base64String = imageData!.base64EncodedStringWithOptions([])
let encodeImg = base64String.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet()) as String!
然后将编码的图像数据字符串作为 JSON 对象发送到 Web 服务器。
let params = ["image":[ "content_type": "image/jpeg", "filename":"testing", "file_data": base64String]]
do {
let postBody = try NSJSONSerialization.dataWithJSONObject(params, options: NSJSONWritingOptions.init(rawValue: 0))
request.HTTPBody = postBody
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
print("Response: \(response)")})
task.resume()
} catch {
print(error)
}
现在 Java 服务器将 base64 图像数据字符串解码为图像
InputStream stream = new ByteArrayInputStream(Base64.decode(image.getBytes(), Base64.DEFAULT));
并将流写入 image.jpeg 文件。当我们尝试打开文件时,出现 不支持文件格式 错误。
当我尝试打印Base64编码的图像数据字符串时,发现如下。
%2F9j%2F4AAQSkZJRgABAQAASABIAAD%2F4QBMRXhpZgAATU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAAqACAAQAAAABAAAQwKADAAQAAAABAAALIAAAAAD%2F7QA4UGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAAA4QklNBCUAAAAAABDUHYzZjwCyBOmACZjs+EJ+%2F+ICQElDQ19QUk9GSUxFAAEBAAACMEFEQkUCEAAAbW50clJHQiBYWVogB9AACAALABMAMwA7YWNzcEFQUEwAAAAAbm9uZQAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1BREJFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKY3BydAAAAPwAAAAyZGVzYwAAATAAAABrd3RwdAAAAZwAAAAUYmtwdAAAAbAAAAAUclRSQwAAAcQAAAAOZ1RSQwAAAdQAAAAOYlRSQwAAAeQAAAAOclhZWgAAAfQAAAAUZ1hZWgAAAggAAAAUYlhZWgAAAhwAAAAUdGV4dAAAAABDb3B5cmlnaHQgMjAwMCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZAAAAGRlc2MAAAAAAAAAEUFkb2JlIFJHQiAoMTk5OCkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAADzUQABAAAAARbMWFlaIAAAAAAAAAAAAAAAAAAAAABjdXJ2AAAAAAAAAAECMwAAY3VydgAAAAAAAAABAjMAAGN1cnYAAAAAAAAAAQIzAABYWVogAAAAAAAAnBgAAE+lAAAE...
如果我们能注意到,它包含许多百分比“%”符号,因为我使用
base64String.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet()
在 swift 上传之前。
谁能指导我解码百分比编码的图像字符串。
我在 Java 中完成了 link Base64 数据解码。有了它,我们可以解码 base64 字符串,但如何处理百分比编码的字符串。
我想学习解码百分比编码的字符串。请提出您的意见。同时,我尝试上传没有百分比编码的图像,看看我是否可以在 Java 中成功解码它。
非常感谢。
我给你的 swift 中的最后一行是 URL 编码。 因此,您的服务器必须按顺序:URL 解码、Base64 解码并放入 JPG。
不要对图像字符串进行百分比编码。您可以直接发送为 base64EncodedString。 Java可以轻松解码。