import UIKit
class ViewController: UIViewcontroller , UINavigationControllerDelegate,UITmagePickerControllerDelegate{
@IBOutlet weak var carImageView: UIImageView!
@IBAction func onLibrary (_sender: UIButton) {
let vc = UIImagePickerController ()
vC. sourceType = .photoLibrary
vc.allowsEditing = true
vc.delegate = self
present (vc, animated: true)
}
@IBAction func oncamera( sender: UIButton) {
let vc = UlImagePickerController ()
vc. sourceType = .camera
vc.allowsEditing = true
vc. delegate = self
present (vC, animated: true)
}
func imagePickerController|_ picker: UIImagePickerController didFinishPickingMediawithInfo info: (UI ImagePickerController.InfoKey: Any))
picker. dismiss (animated: true)
guard let image = infol.editedImage\ as? UI Image else {
return
}
carImageView.image = image
}
}
import UIKit
class viewcontroller: UIViewcontroller , UINavigationcontrol1erDelegate,UIInagePickercontrollerDelegatet{
@ IBoutlet veak var carImageview : UIImageview!
@IBOutlet weak var carDetails: UILabel !
@IBAction func onlibrary ( sender: UIButton) {
let ve = UIImagePickercontroller ()
vC.sourceType = .photoLibrary
vc.allowsEditing = true
vc.delegate = self
present (vc, animated: true)
}
@IBAction func onCamera ( sender: UIButton) {
let vc = UIInagePickerController ()
vc. sourceType = .camera
vc.allowsEditing = true
vc.delegate = self
present (vc, animated: true)
}
func imagePickerController ( picker: UIImagePickerController,didFinishPickingMediaWithInfo info: (UIImagePickerController. InfoKey : Any]) {
picker.dismiss (animated: true)
guard let image = info [.editedImage] as? UIImage else {
return
}
carImageView.image = image
Let access token = get baidu_ token ()
if access_token == "" {
return
}
else {
get_car_ type (access token: access_token)
}
}
func get car type (access token: String) {
let image = carImageView. image
guard let data = image!. jpegData (compressionQuality: 0.5) else (
return
}
let data base64 str = data.base64Encodedstring ()
let carType host = "https: //aip.baidubce.com/ rest /2.0/ image-classify/v1/car" + "?access token=" + "' (access token) "
if let url = URI (string: carrype host) {
var reguest = URLReguest (url: url)
request. setValue ("application/x-www-form-urlencoded", fortITPHeaderField:"content-Type")
request.httpMethod = "POST"
let cs = NSCharacterset (charactersIn: "/=+8").inverted
let image urlEncode = data base64 str .addingPercentEncoding (withAllovedCharacters:cs)
let poststring = "image=1 (image_ ur1Encode !) atop num=5abaike num-1"
request.httpBody = postString.data (using: .utf8)
URISession. shared.dataTask (with: request) | (data, response,error) in
if error != nil {
print("error")
}
else {
if let json = try? JSONSerialization. jsonObject (with:data!, options: .allowFragments) as? [String : Any] (
let result = son ["result") as! Array<Dictionary<String, Any>>
let name = result (0] ("name"] as! String
var description ="非车类”
if name != n 非车类"(
let baike info = result (0] ("baike info"] as!Dictionary<String, String>
if let details = baike info["description"] {
description = details
}
else {
desoription = "百度百科无此车资料"
}
}
DispatchQueue.main.async {
self .carDetails.text = description
self.carName.text = name
}
}
}
}
•resume ( )
}
}
func get baidu_ token () -›String {
let API_Key = "EIpAlhdD7i5152EsiNgpU0F1"
let Secret_Key = "p8EZWg4ag]DOxABmKvBYSNyZ1ŸzGFqbm"
let token host = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client credentials&client id=\(API Key) §client secret=\ (Secret _Key) "
var access token = ""
let semaphore: DispatchSemaphore = DispatchSemaphore (value: 0)
if let url = URL (string: token host) {
URI.Session. shared. datalask (with: url) | (data, response, error) in iferror!= nil {
print ("network error")
}
else {
if let json = try? JSONSerialization. jsonObject (with:data!, options: allowFragments) as? [String : Any] {
access_token = json ["access token"] as! String
}
}
semaphore.signal ()
}
.resume ()
}
else {
print ("url error")
}
semaphore.wait ()
return access token
}
}