阿里云视觉智能开放平台Java SDK生成URL示例

简介: 阿里云视觉智能开放平台是基于阿里巴巴视觉智能技术实践经验,面向视觉智能技术企业和开发商(含开发者),为其提供高易用、普惠的视觉API服务,帮助企业快速建立视觉智能技术应用能力的综合性视觉AI能力平台。可以为您提供普惠易用的AI能力。适用于城市大脑、安防、数字营销、互联网娱乐、手机应用等行业,企业和开发商可以选择相应能力自行封装解决方案或者是产品、服务。使用阿里云视觉智能开放平台服务时,需要传入文件URL,视觉智能平台根据传入的文件URL对文件进行智能处理。本文介绍对于非OSS用户,或者OSS所属地域不是华东2(上海)使用Java SDK通过本地文件或网络文件链接生成URL的快速调用示例。

前提:

获取到阿里云账号的AccessKey ID 和AccessKey Secret:


操作步骤:

1.添加Pom依赖

<dependency><groupId>com.aliyun</groupId><artifactId>tea-openapi</artifactId><version>0.0.7</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>openplatform20191219</artifactId><version>3.0.1</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>oss-client</artifactId><version>3.0.2</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.7</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.13</version></dependency>

2.Code  Sample

importcom.aliyun.fileform.models.FileField;
importcom.aliyun.openplatform20191219.models.AuthorizeFileUploadRequest;
importcom.aliyun.openplatform20191219.models.AuthorizeFileUploadResponse;
importcom.aliyun.oss.models.PostObjectRequest;
importcom.aliyun.tea.TeaConverter;
importcom.aliyun.tea.TeaPair;
importcom.aliyun.teautil.models.RuntimeOptions;
importorg.apache.commons.lang3.StringUtils;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.net.URL;
importjava.net.URLConnection;
importjava.net.URLDecoder;
importjava.util.HashMap;
importjava.util.Map;
importjava.util.concurrent.ConcurrentHashMap;
//  使用Java SDK通过本地文件或网络文件链接生成URLpublicclassViapiFileUtilAdvance {
publicstaticvoidmain(String[] args) throwsException {
StringaccessKey="xxxxxxxxxx";    //您的AccessKeyIDStringaccessKeySecret="xxxxxxxxxx";   //您的AccessKeySecretStringregionId="cn-shanghai";
Stringfile="D:/picture/recognize_1.jpg"; //或者本地上传//String file = "https://img.alicdn.com/tfs/TB1S0DjC4v1gK0jSZFFXXb0sXXa-692-440.jpg";try (InputStreaminputStream=buildInputStream(file)) {
ViapiFileUtilAdvancefileUtils=ViapiFileUtilAdvance.getInstance(accessKey, accessKeySecret, regionId);
StringossTempFileUrl=fileUtils.upload(inputStream);
System.out.println(ossTempFileUrl);
        }
    }
publicstaticInputStreambuildInputStream(StringfilePath) throwsIOException {
if (StringUtils.startsWithAny(filePath, newCharSequence[]{"http://", "https://"})) {
filePath=URLDecoder.decode(filePath, "UTF-8");
URLurl=newURL(filePath);
URLConnectionurlConnection=url.openConnection();
returnurlConnection.getInputStream();
        } else {
Filekey1=newFile(filePath);
returnnewFileInputStream(key1);
        }
    }
publicstaticsynchronizedViapiFileUtilAdvancegetInstance(StringaccessKeyId, StringaccessKeySecret, StringregionId) throwsException {
StringmapKey=String.format("%s:%s:%s", regionId, accessKeyId, accessKeySecret);
ViapiFileUtilAdvancefileUtils=_map.get(mapKey);
if (fileUtils==null) {
_map.putIfAbsent(mapKey, newViapiFileUtilAdvance(accessKeyId, accessKeySecret, regionId));
fileUtils=_map.get(mapKey);
        }
returnfileUtils;
    }
privateViapiFileUtilAdvance(StringaccessKeyId, StringaccessKeySecret, StringregionId) throwsException {
Map<String, Object>cm=newHashMap<>();
cm.put("regionId", regionId);
cm.put("autoretry", "true");
cm.put("accessKeyId", accessKeyId);
cm.put("accessKeySecret", accessKeySecret);
cm.put("connectTimeout", 15*1000);
cm.put("readTimeout", 30*1000);
cm.put("maxIdleConns", 200);
cm.put("type", "access_key");
cm.put("endpoint", "openplatform.aliyuncs.com");
_runtime=RuntimeOptions.build(cm);
com.aliyun.tearpc.models.ConfigauthConfig=com.aliyun.tearpc.models.Config.build(cm);
_authClient=newcom.aliyun.openplatform20191219.Client(authConfig);
//ossEndpointType = "internal";//aliyun-vpc_ossConfig=com.aliyun.oss.models.Config.build(TeaConverter.buildMap(
newTeaPair("accessKeySecret", accessKeySecret),
newTeaPair("type", "access_key"),
newTeaPair("protocol", _authClient._protocol),
newTeaPair("regionId", _authClient._regionId)
        ));
    }
publicStringupload(InputStreaminputStream) throwsException {
AuthorizeFileUploadRequestauthRequest=AuthorizeFileUploadRequest.build(TeaConverter.buildMap(
newTeaPair("product", "imageseg"),
newTeaPair("regionId", _authClient._regionId)
        ));
AuthorizeFileUploadResponseauthResponse=_authClient.authorizeFileUploadWithOptions(authRequest, _runtime);
com.aliyun.oss.models.ConfigossConfig=newcom.aliyun.oss.models.Config();
com.aliyun.openapiutil.Client.convert(_ossConfig, ossConfig);
ossConfig.accessKeyId=authResponse.accessKeyId;
ossConfig.endpoint=com.aliyun.openapiutil.Client.getEndpoint(authResponse.endpoint, authResponse.useAccelerate, ossEndpointType);
com.aliyun.oss.ClientossClient=newcom.aliyun.oss.Client(ossConfig);
FileFieldfileObj=FileField.build(TeaConverter.buildMap(
newTeaPair("filename", authResponse.objectKey),
newTeaPair("content", inputStream),
newTeaPair("contentType", "")
        ));
PostObjectRequest.PostObjectRequestHeaderossHeader=PostObjectRequest.PostObjectRequestHeader.build(TeaConverter.buildMap(
newTeaPair("accessKeyId", authResponse.accessKeyId),
newTeaPair("policy", authResponse.encodedPolicy),
newTeaPair("signature", authResponse.signature),
newTeaPair("key", authResponse.objectKey),
newTeaPair("file", fileObj),
newTeaPair("successActionStatus", "201")
        ));
PostObjectRequestuploadRequest=PostObjectRequest.build(TeaConverter.buildMap(
newTeaPair("bucketName", authResponse.bucket),
newTeaPair("header", ossHeader)
        ));
com.aliyun.ossutil.models.RuntimeOptionsossRuntime=newcom.aliyun.ossutil.models.RuntimeOptions();
com.aliyun.openapiutil.Client.convert(_runtime, ossRuntime);
ossClient.postObject(uploadRequest, ossRuntime);
StringimageURL="http://"+authResponse.bucket+"."+authResponse.endpoint+"/"+authResponse.objectKey+"";
returnimageURL;
    }
RuntimeOptions_runtime;
com.aliyun.openplatform20191219.Client_authClient;
com.aliyun.oss.models.Config_ossConfig;
StringossEndpointType=null;
staticMap<String, ViapiFileUtilAdvance>_map=newConcurrentHashMap<>();
}

3.测试结果

生成的图片地址=http://viapi-customer-pop.oss-cn-shanghai.aliyuncs.com/ce67_212614432711017986_7857979ccbdf4c3e91aeaeef84effb00


注意事项:

在添加代码块之后,在使用try内包含流会报:“try-with-resource are not supported at language level “5”错误。通过IDEA自带的alt+enter修复功能设置一个版本到7即可。

f0bc47571bade21abfbdc4101c4f798ca19743c540f8b9bdff17e84295dff8f1QzpcVXNlcnNc5a6JXEFwcERhdGFcUm9hbWluZ1xEaW5nVGFsa1wyNDU2NjQxODQ1X3YyXEltYWdlRmlsZXNcMTYzNzQ4NTQwMTg4NV8yMjM0ODhFMy05MkZGLTRmYmYtQUI1MC1BNjFDODVEOTBBQTIucG5n.png



更多参考:

衣冠の禽兽CSDN文档:IDEA 报错:not supported at language level "5"

ChaseDreamBoy  CSDN文档:idea maven 出现:Try-with-resources are not supported at language level '5'

阿里云视觉智能开放平台快速入门:生成URL







目录
相关文章
|
3月前
|
Java API 开发工具
百宝箱开放平台 ✖️ Java SDK
百宝箱提供Java SDK,支持开发者集成其开放能力。需先发布应用,准备Java 8+及Maven环境,通过添加依赖安装SDK,并初始化客户端调用对话型或生成型智能体,实现会话管理、消息查询与文件上传等功能。
1350 0
百宝箱开放平台 ✖️ Java SDK
|
7月前
|
存储 Java API
MinIO Java SDK 7.1.4 升级到 8.5.17 需要注意什么
现在我需要你帮我分析对比这个两个sdk在对外的接口设计上是否有不兼容的变更
590 5
|
Java Apache 开发工具
【Azure 事件中心】 org.slf4j.Logger 收集 Event Hub SDK(Java) 输出日志并以文件形式保存
【Azure 事件中心】 org.slf4j.Logger 收集 Event Hub SDK(Java) 输出日志并以文件形式保存
240 1
|
存储 Java API
【Azure 存储服务】Java Storage SDK 调用 uploadWithResponse 代码示例(询问ChatGTP得代码原型后人力验证)
【Azure 存储服务】Java Storage SDK 调用 uploadWithResponse 代码示例(询问ChatGTP得代码原型后人力验证)
174 0
|
存储 Java 开发工具
【Azure 存储服务】Azure Blob上传大文件(600MB)出现内存溢出情况(Java SDK)
【Azure 存储服务】Azure Blob上传大文件(600MB)出现内存溢出情况(Java SDK)
246 0
|
Java 开发工具
通过Java SDK调用阿里云模型服务
在阿里云平台上,可以通过创建应用并使用模型服务完成特定任务,如生成文章内容。本示例展示了一段简化的Java代码,演示了如何调用阿里云模型服务生成关于“春秋战国经济与文化”的简短文章。示例代码通过设置系统角色为历史学家,并提出文章生成需求,最终处理并输出生成的文章内容。在实际部署前,请确保正确配置环境变量中的密钥和ID,并根据需要调整SDK导入语句及类名。更多详情和示例,请参考相关链接。
|
监控 Java 开发工具
【事件中心 Azure Event Hub】Event Hub Java SDK的消费端出现不消费某一个分区中数据的情况,出现IdleTimerExpired错误消息记录
【事件中心 Azure Event Hub】Event Hub Java SDK的消费端出现不消费某一个分区中数据的情况,出现IdleTimerExpired错误消息记录
145 3
|
SQL Java 关系型数据库
实时数仓 Hologres产品使用合集之如何安装和使用Java SDK
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
存储 安全 API
"解锁企业级黑科技!用阿里云视觉智能打造钉钉级人脸打卡系统,安全高效,让考勤管理秒变智能范儿!"
【8月更文挑战第14天】随着数字化办公的发展,人脸打卡成为企业考勤的新标准。利用阿里云视觉智能开放平台构建类似钉钉的人脸打卡系统,其关键在于:高精度人脸识别API支持复杂场景下的快速检测与比对;活体检测技术防止非生物特征欺骗,确保安全性;云端存储与计算能力满足大数据处理需求;丰富的SDK与API简化集成过程,实现高效、安全的考勤管理。
453 2
|
缓存 负载均衡 算法
"揭秘!阿里云视觉智能开放平台人脸1vn搜索慢?轻松几招,QPS飙升,让你的应用快如闪电,用户体验秒变VIP级享受!"
【8月更文挑战第14天】在数字浪潮中,人脸识别技术广泛应用于安全监控到个性化服务等领域。阿里云视觉智能开放平台凭借其强大算法和服务模式成为行业翘楚。面对人脸1:Vn搜索响应慢的问题,不仅可通过增加QPS优化,还需从参数调整、缓存机制、并行处理及算法硬件升级等方面综合施策,以实现搜索速度与准确性的双重提升。
1715 2