如何从 jsonplaceholder API 解码和编码图像
Posted
技术标签:
【中文标题】如何从 jsonplaceholder API 解码和编码图像【英文标题】:how decode and encode image from jsonplaceholder API 【发布时间】:2016-04-26 03:02:38 【问题描述】:我想通过这个 API
http://jsonplaceholder.typicode.com/photos/3
显示来自"url"
by swiftyJson 的图像
我写了这段代码,但返回 nil
var base64String = subDataJSON["url"].stringValue
let decodedData = NSData(base64EncodedString: base64String, options: NSDataBase64DecodingOptions(rawValue: 0))
self.MyImage.image = decodedIamge! as UIImage
我如何从 API 中获取图片? API 中的所有图像都以相同的方式处理吗?
【问题讨论】:
【参考方案1】:该代码有效吗?从APIhttp://jsonplaceholder.typicode.com/photos/3的响应中可以看出@
"albumId": 1,
"id": 3,
"title": "officia porro iure quia iusto qui ipsa ut modi",
"url": "http://placehold.it/600/24f355",
"thumbnailUrl": "http://placehold.it/150/1941e9"
基本上,您在此代码subDataJSON["url"].stringValue
上所做的是您检索“url”节点的值,它将返回“http://placehold.it/600/24f355”。所以,我认为这不是您期望的 base64 字符串。而不是调用
let decodedData = NSData(base64EncodedString: base64String, options: NSDataBase64DecodingOptions(rawValue: 0))
试试这个代码
let decodedData = NSData(contentsOfURL: NSURL(string: base64String))
但是,当我们调用同步时,这可能会阻塞您的 UI 线程。更好的方法是
let dataTask: NSURLSessionDataTask = NSURLSession.sharedSession().dataTaskWithURL(NSURL(string: "")!) (
data, response, error) -> Void in
if let imageView = self.MyImage
dispatch_async(dispatch_get_main_queue())
imageView.image = UIImage(data: data)
;
dataTask.resume()
【讨论】:
非常感谢它有效!但是我想问你,如果图像作为字符串保存在 API 中怎么办?如何从 base64 解码到 UIImage?因为我的朋友会为我编写 API,他说图像将以字符串形式返回,我应该解码以在我的应用程序中使用它,我该怎么做?有没有现成的带有字符串图像的 API 用于测试代码? 这里是把图片编码成base 64字符串和解码64字符串成图片的代码 //UIImage to Base64 String let image: UIImage = yourImage; let imageData: NSData = UIImagePNGRepresentation(image) let base64String = imageData.base64EncodedStringWithOptions(.Encoding64CharacterLineLength) //将Base64字符串解码为UIImage let base64String = "base64String";让 decodedImageData = NSData(base64EncodedString: base64String, options: .IgnoreUnknownCharacters) 让 decodedImage: UIImage = UIImage(data: decodedImageData)以上是关于如何从 jsonplaceholder API 解码和编码图像的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:无法读取 JSONPlaceholder 未定义的属性“url”
无法从 api 获取数据,Future 总是返回 null - 颤振
未处理的异常:从 jsonplaceholder.typecode.com/photos 获取 Json 时,类型“List<dynamic>”不是“Map<String, dyna