Vize.ai iOS 应用中的图像识别
Vize.ai Image Recognition in iOS app
我正在尝试使用 Swift 4 在 iOS 应用程序中实现 Vize.ai 图像识别。
在他们的 documentation 中,这是他们为 Objective C 提供的代码示例:
NSDictionary *headers = @{@"Authorization": @"JWT {your JWT token}", @"Content-Type": @"application/x-www-form-urlencoded", @"Accept": @"text/plain"};
UNIUrlConnection *asyncConnection = [[UNIRest post:^(UNISimpleRequest *request) {
[request setUrl:@"http://cl-api.vize.ai/{your task ID}?image={path/myimage.png}"];
[request setHeaders:headers];
}] asundefinedAsync:^(UNIHTTPundefinedResponse *response, NSError *error) {
NSInteger code = response.code;
NSDictionary *responseHeaders = response.headers;
UNIJsonNode *body = response.body;
NSData *rawBody = response.rawBody;
}];
如您所见,我必须将图像路径传递给请求。在我的应用程序中,用户可以选择分析添加到项目资产文件夹的默认图片,或者从 library/take 添加照片。
本例中的图像路径应该是什么?
以下是我使用 Swift 发出请求的方式 4,我添加到其中的任何图像路径都会给我返回一个 "missing image or url" 响应错误:
let headers: HTTPHeaders = [
"Authorization": "JWT \(jwtToken)",
"Content-Type": "application/x-www-form-urlencoded",
"Accept": "text/plain"
]
let url = "https://cl-api.vize.ai/\(taskID)?image=\(imagePath)"
Alamofire.request(url, method: .post, parameters: nil, encoding: JSONEncoding.default, headers: headers).responseJSON { response in
debugPrint(response)
}
非常感谢任何帮助。谢谢!
所以我设法使用多部分表单数据找到了解决方案。这是它的完整代码。
func getVizeImageAnalysis(image: UIImage) {
let headers: HTTPHeaders = [
"Authorization": "JWT \(jwtToken)",
"Content-Type": "application/x-www-form-urlencoded",
"Accept": "text/plain"
]
let url = "https://cl-api.vize.ai/\(taskID)"
manager.upload(multipartFormData: { multiPartData in
// Add image
if let imageData = UIImageJPEGRepresentation(image, 0.8) {
multiPartData.append(imageData, withName: "image", fileName: "pickedImage", mimeType: "image/jpeg")
}
}, to: url, method: .post, headers: headers, encodingCompletion: {
encodingResult in
switch encodingResult {
case .success(let request, _, _):
request.responseJSON{ response in
debugPrint(response)
}
case .failure(let encodingError):
print(encodingError)
}
})
}
我正在尝试使用 Swift 4 在 iOS 应用程序中实现 Vize.ai 图像识别。
在他们的 documentation 中,这是他们为 Objective C 提供的代码示例:
NSDictionary *headers = @{@"Authorization": @"JWT {your JWT token}", @"Content-Type": @"application/x-www-form-urlencoded", @"Accept": @"text/plain"};
UNIUrlConnection *asyncConnection = [[UNIRest post:^(UNISimpleRequest *request) {
[request setUrl:@"http://cl-api.vize.ai/{your task ID}?image={path/myimage.png}"];
[request setHeaders:headers];
}] asundefinedAsync:^(UNIHTTPundefinedResponse *response, NSError *error) {
NSInteger code = response.code;
NSDictionary *responseHeaders = response.headers;
UNIJsonNode *body = response.body;
NSData *rawBody = response.rawBody;
}];
如您所见,我必须将图像路径传递给请求。在我的应用程序中,用户可以选择分析添加到项目资产文件夹的默认图片,或者从 library/take 添加照片。
本例中的图像路径应该是什么?
以下是我使用 Swift 发出请求的方式 4,我添加到其中的任何图像路径都会给我返回一个 "missing image or url" 响应错误:
let headers: HTTPHeaders = [
"Authorization": "JWT \(jwtToken)",
"Content-Type": "application/x-www-form-urlencoded",
"Accept": "text/plain"
]
let url = "https://cl-api.vize.ai/\(taskID)?image=\(imagePath)"
Alamofire.request(url, method: .post, parameters: nil, encoding: JSONEncoding.default, headers: headers).responseJSON { response in
debugPrint(response)
}
非常感谢任何帮助。谢谢!
所以我设法使用多部分表单数据找到了解决方案。这是它的完整代码。
func getVizeImageAnalysis(image: UIImage) {
let headers: HTTPHeaders = [
"Authorization": "JWT \(jwtToken)",
"Content-Type": "application/x-www-form-urlencoded",
"Accept": "text/plain"
]
let url = "https://cl-api.vize.ai/\(taskID)"
manager.upload(multipartFormData: { multiPartData in
// Add image
if let imageData = UIImageJPEGRepresentation(image, 0.8) {
multiPartData.append(imageData, withName: "image", fileName: "pickedImage", mimeType: "image/jpeg")
}
}, to: url, method: .post, headers: headers, encodingCompletion: {
encodingResult in
switch encodingResult {
case .success(let request, _, _):
request.responseJSON{ response in
debugPrint(response)
}
case .failure(let encodingError):
print(encodingError)
}
})
}