# encoding:utf-8
import requests
import base64
'''
车型识别
'''
request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/car"
# 二进制方式打开图片文件
£ = open('[本地文件]','rb')
img = base64.b64encode (f. read () )
params = "image" :img, "top num" :5)
access_token ='[调用鉴权接口获取的token]'
request_url = request url + "?access_token=" + access_token
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request _uri, data=params, headers=headers)
if response:
print (response.json() )
返回的 JSON 数据:
{
"log id": 4086212218842203806,
"location result": {
"width": 447,
"top": 226,
"height": 209,
"left" : 188
},
"result":[{
"baike_info": {
"oaike_url": "mhttp://baike.baidu.con/iten/号E5号B8883号E5号8A号A0%E8 SBFSAAChiron/20419512",
"description":"布加迪Chiron是法国跑车品牌布加迪出品的豪华超跑车。配置四涡轮增压发动机,420公里每小时,有23种顾色的选择,售价高达260万美元。"
},
"score":0.98793351650238,
"name":"布加迪Chiron"
"year":"无年份信息"
},
{
"score":0.0021970034576952,
"name":"奥迪RS5",
"year":"2011-2017"
},
{
"score":0.0021096928976476,
"name":"奥迪RS4",
"year":"无年份信息"
}
{
"score": 0.0015581247862428,
"name":"奥迪RS7",
"year": "2014-2016"
},
{
"score":0.00082337751318933,
"name":"布加迪威航",
"year": "2004-2015"
}],
"color_result":"颜色无法识别"
}
# myjson.js
module.exports = function() {
var data = { users: [] }
for (var i = 0; i < 1000; i++){
data.users.push({ id: i, name: 'user' + i })
}
return data
}
# news.js
let Mock = require ('mockjs') ;
Let Random = Mock.Random;
module.exports = function () {
var data = {
news: []
}
var images = [1,2, 3].map (×->Random.image ('200x100', Random.color () ,Random. word (2, 6) ) ) ;
for (var 1 = 0; i < 100; i++) {
var content = Random.cparagraph (0,io);
data.news.push({
id: 1,
title:Random.cword (8,20) ,
desc:content.substr (0,40),
tag:Random.cword (2, 6) ,
views:Random.integer (100,5000),
images:images.slice (0, Random. integer (1,3) )
})
}
return data
}
import UIkit
import Foundation
if let url = URL(string: "http://localhost:3004/news") {
URISession.shared.dataTask (with: url) { (data, response, error) in
if error = nil {
print ("Network errors")
}
else {
let rs = String (data: data!, encoding: String. Encoding.utf8).
print (rs)
if let json = try? JSONSerialization. jsonObject (with: data!,options:.allowFragments) {
print (json)
}
}
}
.resume()
}
func sessionGetbata() {
let urlString = "http://www.tuling123.com/"
let url = URL(StIIng:UILString)
let request = URiRequest (urL: url!:)
let session = URLSession.shared
let dataTask = session.dataTask(with: request,
completionlandler: {(data, response, error) -> Vold in
if error != nil {
print (error.debuglescription)
}elset{
let str = String (data: data., encoding:String. Encoding.utf8)
print (str!)
}
}) as URLSessionTask
datalask. resume ()
}
func sessionDownloadImage () {
let url = URL(string: "http://hangge.com/blog/images/logo.png")
let request = URLRequest (url: url!)
let session = URLSession.shared
let downloadTask = session.downloadTask (with:request,completionHandler:{
(location : URI?, response :URLResponse?, error :ErrOr?)
-> Void in
print ("location: \(String (describing: location))")
let locationPath = location?.path
let now = NSDatel
let timeInterval: TimeInterval = now.timeIntervalSince1970
let timeStamp = String(timeInterval)
let documents:String = NSHomeDirectory () + "/Documents/\(timeStamp).png"
let fileManager = FileManager. default
try! fileManager.moveItem (atPath: locationPath!, toPath:documents)
print ("new location:\(documents)")
} )
downloadTask.resume ()
}
$ sudo apachectl start | stop | restart
<?pho
function receiveStreamFile ($receiveFile) {
$SstreamData = isset ($GLOBALS [ 'HITP _RAW_POST DATA']) ? $GLOBALS [ 'HTTP_RAW_POST_DATA'] : '' ;
if (empty ($streamData)) {
$streamData = file get contents ( 'php:
}
if ($streamData!='') {
$ret = file _put_contents ($receiveFile, $streamData, true) ;
}else {
$ret = false;
}
return $ret;
}
receiveFile = $_ SERVER["DOCUMENT ROOT"]."/uploadFiles/swift.pNg";
echo $receiveFile;
sret = receivestreamFile ($receiveFile);
echo json encode (array ('success'=> (bool) $ret));
?>
func sessionUploadPhp () {
Iet url = URI(string: mhttp:
let session = URLsession. shared
var request = URIRequest (url: url!, cachePolicy: •reloadIgnoringCacheData)
reguest .httpnethod ="POST"
let fileImage = Bundle.main.path (forResource: "beel", ofType: "png")
let imgData = try! Data (contentsOf: URL (fileURLWithPath: fileImage!))
let uploadlask = session. uploadIask (with: request as URLRequest, from:imgData) {
(data: Data?, response: URLesponse?, error:Error?) -> Void in
if error != nil {
print(error!)
}else{
let str = String (data: data!, encoding: String.Encoding. utf8)
print("上传完毕:\(String (describing: str))")
}
}
uploadTask.resume ()
}
import UIKit
import Foundation
let API Key = "EIpAlhdD7i5152EsiNgpUOF_"
let Secret Key = "p8Ezwg4agi DOxABmKvBYSNyZ1YzGFqb_"
let token host = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id-\(API_Key)&client_secret=l(Secret_Key)"
var access token = ""
var expires_in: Int32 = 0
if let url = URL (string: token host) {
URLSession.shared.dataTask (with: url) { (data, response, error) in
if error != 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
expires in = json ["expires in"] as! Int32
print ("--------access_token------")
print (access_token)
print ("--------expires_time------")
print (expires_in)
}
}
}
.resume ()
}
else {
print ("url error")
}
public struct Loader {
static func readTxt (file url:URL) -> String? {
do {
let source = try String (contentsOf: url)
return source
}
catch {
return nil
}
}
static func readBin (file url: URL) -> Data? {
do {
let data = try Data (contentsOf: url)
return data
}
catch {
return nil
}
}
}
let path = Bundle.main.path (forResource: "grcar.jpg", ofType: nil)
let url = URL (fileURLWithPath: path!)
let data = Loader.readBin (file: url)
if (data == nil) {
print ("File failed to load")
}
let data base64 str = data?.base64EncodedString ()
let data base64 = data?. base64EncodedData ()
access_token "24.2ec96a68£74a842900£07869929413ae.2592000.1598921312.282335-21737249"
let carType host ="https://aip.baidubce.com/rest/2.0/image-classify/v1/car"+"?access_token="+"\(access token) "
if let url = URL (string: carType host) {
var request = URLRequest (url: url)
request. setvalue (“application/x-www-form-urlencoded,forfrrpleaderrield:"Content-Type")
request.httpMethod = "POST"
let cs = NScharacterSet (charactersIn: "/=+%").inverted
let image_urlEncode = data_base64_str!.addingPercentEncoding (withA llowedCharacters: Cs)
let postString = "image=\(image_urlEncode!) stop_num=5&baike num=1"
request.httpBody = postString.data (using:.utf8)
URISession.shared.dataTask (with: request) { (data, response, error) in
if error != nil {
print ("error")
}
else {
let rs - String (data: data!, encoding: String. Encoding. ut f8)
print (rs!)
}
}
. resume ()
}
{
"log_id": 4368540366187197442,
"location result":
{
"width": 386.4585876464844,
"top": 81.3405532836914,
"height": 183.9795532226562,
"left":58.03330230712891
},
"result":
[
{
"score": 0.9767324924468994,
"year": "2014-2017",
"baike info":
{
"baike_url":"/item/%E5%A5%87%E7%91%9EE5/475143",
"image_uri":
"/pic/5882b2b7a0a20cf47a91d7777c094b36acaf9910"
"description":
"2014款奇瑞巴5是国内科技家轿的引领者,带领消费者悦享领先科技。"
},
"name":"奇瑞E5"
},
{
"score" : 0.007103727199137211,
"name":"奇瑞旗云",
"year": "2010-20131"
"score": 0.003686367534101009,
"name":"奇瑞艾瑞泽7"
"year": "2016-20171"
},
{
"score": 0.001757977530360222,
"name":"奇瑞E3",
"year": "2015-2017"
},
{
"score":0.001047104829922318,
"name":" 奇瑞A5",
"year": "2015"
}
],
"color result":"黑色"
}
import UIKit
class ViewController: UIViewController, UINavigationControllerDelegateUlImagePickerControllerDelegate v{
@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 = UIImagePickercontroller ()
vc.sourceType = . camera
vC.allowsEditing = true
vc.delegate = self
present (vc, animated: true)
}
func imagePickercontroller (_ Picker: UIImagePickercontro1ler,didFinishPickingMediawithInfo info: [UIImagePickerController.InfoKey : Any]) {
picker.dismiss(animated: true)
guard let image = info[.editedImage] as? UIImage else{
return
}
carImageView.image = image
}
}
import UIKit
class viewcontroller: UIviewcontroller,UINavigationcontrol1erDelegate,UIImagePickerControllerDelegate {
@IBOutlet weak var carImageView: UI ImageView!
@IBOutlet weak var carName : UILabel!
@IBOutlet weak var carDetails: UIIabel !
@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
ve.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 = URL (string: carType host) {
var request = URLRequest (url: url)
request.setValue("application/×-www-for-urlencoded", forHTTPHeaderField:"Content-Type")
reqruest. httpMethod ="POSI"
let cs = NsCharacterset (charactersIn: "/=+%").inverted
let image_urlEncode = data_base64_str.addingPercentEncoding(withAl1owedcharacters: cs)
let poststring = "image=\(image urlEncode!) &top_num=5abaike_num=1"
request.httpBody = poststring.data (using:.utf8)
URLSession.shared.datarask (with: request) { (data, response,error) in
if error != nil {
print ("error")
}
else {
if let ison = try? JSONSerialization.jsonObject(with:data!, options: allowFragments) as? [String : Any] {
let result = json ["result"] as! Array<Dictionary<String,Any>>
let name = result [0]["name "] as! string
var desoription = "非车类"
if name != "非车类" {
let baike_info = result [0] ["baike_info"] as!
if let details = baike info ["description"'] {
description = details
}
else {
description ="百度百科无此车资料"
}
}
DispatchQueue.main.async {
self .carDetails.text = description
self.carName.text = name
}
}
}
}
.resume ()
}
}
func get_baidu_token ()-›String {
let API_Key = "EIpAIhaD7i5152ESiNapUOFI"
let Secret_Key = "p8EZWg4agjDOxABmKvBYSNyZ1YzGFabm"-
let token_host = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentialssclientid=\(API_Key)&client_secret=\(Secret_Key)"
var access token =""
let semaphore: DispatchSemaphore = DispatchSemaphore (value: 0)
if let url = URL(string: token host) {
URLSession. shared.dataTask (with: url) { (data, response, error) in
if error != 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
}
}