如何解码和编码来自 jsonplaceholder API 的图像
how decode and encode image from jsonplaceholder API
我想通过这个API
http://jsonplaceholder.typicode.com/photos/3
显示来自 swiftyJson 的 "url"
的图像
我写了这段代码,但是 return nil
var base64String = subDataJSON["url"].stringValue
let decodedData = NSData(base64EncodedString: base64String, options: NSDataBase64DecodingOptions(rawValue: 0))
self.MyImage.image = decodedIamge! as UIImage
如何从 API 中获取图片? APIs里的所有图片都是用同样的方式处理的吗?
该代码有效吗?从 API http://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" 节点的值,它将 return “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
http://jsonplaceholder.typicode.com/photos/3
显示来自 swiftyJson 的 "url"
的图像
我写了这段代码,但是 return nil
var base64String = subDataJSON["url"].stringValue
let decodedData = NSData(base64EncodedString: base64String, options: NSDataBase64DecodingOptions(rawValue: 0))
self.MyImage.image = decodedIamge! as UIImage
如何从 API 中获取图片? APIs里的所有图片都是用同样的方式处理的吗?
该代码有效吗?从 API http://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" 节点的值,它将 return “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()