package com.vb.utils;
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.PutObjectRequest;
import com.baidu.aip.imagesearch.AipImageSearch;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.vb.entity.SearchResult;
import org.json.JSONObject;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.web.multipart.MultipartFile;
import sun.misc.BASE64Decoder;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import static com.vb.utils.JsonParseResult.getListResult;
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
public class SearchUtil {
//设置APPID/AK/SK
public static final String APP_ID = "36971505";
public static final String API_KEY = "Ldp6lRLrNDq0veyeEF5L4NqP";
public static final String SECRET_KEY = "rwEaC9seSPGIrwqWkUdLKFyTeCdOfgfG";
// 初始化一个AipImageSearch
public static final AipImageSearch client = new AipImageSearch(APP_ID, API_KEY, SECRET_KEY);
//普通版入库示例
public static JSONObject upload(MultipartFile file) throws IOException {
// 传入可选参数调用接口
HashMap<String, String> options = new HashMap<String, String>();
// options.put("class_id1", "1");
// options.put("class_id2", "1");
/*brief是上传图片的信息,需要手动拼接*/
//获取源文件名
String filename = file.getOriginalFilename();
//将源文件格式截取,加上当前时间戳组成新文件名保证不重复
String name = System.currentTimeMillis() + filename.substring(filename.lastIndexOf("."));
//将上边的文件名时间戳截取作为文件id
String id = name.substring(0, name.lastIndexOf("."));
String brief = "{\"path\":\"" + name + "\", \"id\":\"" + id + "\"}";
// 参数为二进制数组
byte[] bytes = file.getBytes();
JSONObject res = client.productAdd(bytes, brief, options);
// 商品检索—入库, 图片参数为远程url图片
// JSONObject res = client.productAddUrl(url, brief, options);
return res;
}
/**
* oss版上传和百度关联
*
* @param file 文件
* @return
*/
public static HashMap<String, String> ossUpload(MultipartFile file) {
//调用上传方法
String[] strings = baiduUploadFile(file);
// 传入可选参数调用接口
HashMap<String, String> options = new HashMap<String, String>(2);
// options.put("class_id1", "1");
// options.put("class_id2", "1");
/*brief是上传图片的信息,需要手动拼接*/
//文件路径strings[0]
//文件名strings[1]
String brief = "{\"path\":\"" + strings[0] + "\", \"id\":\"" + strings[1] + "\"}";
// 商品检索—入库, 图片参数为远程url图片此处为oss文件路径
JSONObject jsonObject = client.productAddUrl(strings[0], brief, options);
String logId = jsonObject.getString("log_id");
if (StringUtils.isNotBlank(logId)){
options.put("flag","success");
options.put("url",strings[0]);
}else{
options.put("flag","fail");
}
return options;
}
/**
* 上穿文件到oss
*
* @param file 文件数据
* @return String[]
*/
private static String[] baiduUploadFile(MultipartFile file) {
// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
//https://oss-cn-beijing.aliyuncs.com
String endpoint = "https://oss-cn-beijing.aliyuncs.com";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
String accessKeyId = "LTAI5tDsrQLjfNmPTr7oUimx";
String accessKeySecret = "QJn7sr0tLwz7jRsJxGNTCBYH5kubgI";
// 填写Bucket名称,和创建的bucket一致
String bucketName = "vibang";
// 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
String objectName = "";
// 填写本地文件的完整路径,例如D:\\localpath\\examplefile.txt。
// 如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
//String filePath = "E:\\2212\\pic\\girl.jpg";
String filename = file.getOriginalFilename();
//防止文件名出现重复,使用当前时间戳作为当前文件的名,将文件名的原生后缀截取
objectName = objectName + System.currentTimeMillis() + filename.substring(filename.lastIndexOf("."));
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
String[] resultString = new String[2];
String fileUrl = "";
try {
//获得文件流
InputStream inputStream = file.getInputStream();
// 创建PutObjectRequest对象。
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream);
// 上传文件。
ossClient.putObject(putObjectRequest);
//得到上传之后的文件地址
// https://bucketname.endpoint/objectnane
fileUrl = "https://vibang.oss-cn-beijing.aliyuncs.com/" + objectName;
System.out.println("上传之后的文件路径" + fileUrl);
//文件唯一路径
resultString[0] = fileUrl;
//文件名
resultString[1] = objectName;
return resultString;
} catch (OSSException | ClientException | IOException oe) {
throw new RuntimeException(oe);
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
public static List<SearchResult> search(String base64String) throws IOException {
// 传入可选参数调用接口
HashMap<String, String> options = new HashMap<String, String>();
// options.put("class_id1", "1");
// options.put("class_id2", "1");
// options.put("pn", "100");
// options.put("rn", "250");
// 参数为二进制数组
BASE64Decoder decoder = new BASE64Decoder();
String file = base64String.substring(base64String.indexOf(",", 1) + 1, base64String.length());
byte[] bytes = decoder.decodeBuffer(file);
// 处理数据
for (int i = 0; i < bytes.length; ++i) {
if (bytes[i] < 0) {
bytes[i] += 256;
}
}
JSONObject res = client.productSearch(bytes, options);
return getListResult(res.toString());
// 商品检索—检索, 图片参数为远程url图片
// JSONObject res = client.productSearchUrl(url, options);
// System.out.println(res.toString(2));
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
百度ocr图片文字识别 (141个子文件)
006d599306fae278d1d117f0a4de975cf86aa8 424B
02fabed62027f3bcb1339081204f65b8af7669 179B
0624c76f19f7f9e3dd751759f192985d808704 64B
085ce9a24253cd39c9861b18d33bda6bc6bb0f 163B
0c9986d3ceecc75caa39907b450737c7db2ec9 651B
157e479f196cf9ae88b3a75256f7dd2b89eb5a 178B
17bddd7268902c55fb5ef941abe61ae2cb21af 44B
1ec0f7310683ab1d81de20fe13f6a821d80e29 46B
2686e25df6d2e44df43e1c8b42c45b7425372f 127B
28b0e37c7d206feb564310fdeec0927af4123a 55KB
2e81b8e3623926534e6543c5b5c5c79d7b05bb 162B
3172df1f8b6938272584f8e0348e698cc2806a 61B
32ebc0e044e29814da016c392738d875ba2f20 916B
35b6d5e9d73c5292e73b0db0e62dd7b70bf45d 428B
3ba91dcd54ccf8ab4ede3d33a045e45e319be5 44B
3e0396ac36c8f161b4d8935541ca6f78185271 162B
3ebd6b5923ad0b00c7fe01f4dbeabf1cf1a69f 45B
404ec61262145349d3c388c4d271f59402c7b1 60B
42cd1b7443b52700af6437d8330f6d4d9cc823 44B
50e8bf773e8ffe674b2ee8c5eff48f611f6113 199B
55335dbeb9993af318e54b52ad683764e81501 200B
55ceb303939ed063b360bbd4336750a92756a1 99B
599c8b3404773bc67d0e12f07aa2e8d254fd9f 79B
5f6ae6bb8f96dc41d1e52183bef17a28cba127 74B
60fcb8bccd5dadc50feff2f4c7c3ebbbe5d52b 141B
643f4558f036eb15af1e807740325991f21224 3KB
66bdd135da99ea6e013b960848d437c34d62fd 45B
6b5e3dcd84020454a83623a46d13e97ec0e95c 70B
6c527715252e39edec8544aca4966fe2fcb489 171B
6c76c8466146ec8b3f49a847a6ef2efa9bfc33 45B
6df20f00815b3b451b800bbf0cc7f64857ecd4 961B
733bead1c1e2db9fa550717989619e3f4945c4 89B
7454afc10dc0741e222a76773bcf798a47b223 100B
7e1a113aafbd88877ae16b184c794374601d2f 45B
82f36e91e6e72e9b53bc02b7d049703e12dfe6 79B
8689996a57ee224c082dba9cca167ff2d132ff 61B
88a9e2c797cbe14db36586f991c3ae19624ae4 62B
8a1041b25205d95a7a72b8a45de88fd563c8df 74B
8bb5907ee0facfe5b8d86d0d5a9e4afb4e0a0a 140B
8e47d69f95af14ba3ce1ae0ad0bac07243f99d 200B
9202660cfc66ad45b33017bd45ef4574bb9a2e 45B
931503ec8523883f91233a0936c2e58fa02037 99B
93f0eebb2ab6afdde7127add563e65273a22b0 95B
94e3028ebfcd3b47b9bc20627d2d325ab2cb0f 80B
9e00a2a96fa9d7c5dbc9859664a78d980158c2 249B
9f9e5fe688a3d4a6482e353e82e07bacfe51a9 162B
9fbb4d04464b5c475158543f43c99a7e32ae54 75B
a7b2e9ab424ab1585e98a4a2bd5de5c3261f9f 79B
a7c3528f83767fe6952645a4df23d427cabcf3 557B
b6cc8cb87a64017988aa72e411004a03ce103f 153B
b82483563944cf282901b98fe6cca353b9c533 306B
b83364663549a824b5ea772416a5cc388e9fa1 170B
b9a889ff34864b3a25609e72dbb91cda6465d7 45B
ba6f54ac526de46248af840bab26f33f946b93 3KB
bbc390faa75e3dbc8abf074b6b99bc5cc6d3cd 79B
bcafa1e4d27b3664609e5efab6ce766cff8e7a 75B
bfc89bc7611e5247cc0c24e28bed4bb89ead37 875B
c36e0961f3fe949b7b018a0260ac3173a8552c 961B
c795d3bc9d581cb982520c45b52b4b5dbbd8de 200B
c7b92381b937bd19156626c100a33dafea1194 723B
c942b26a3f7100ee033ddc70529f631f2a82df 655B
cb68147fc9c12fa46592dae1e97c0cfa24ee15 44B
SearchUtil.class 6KB
JsonParseResult.class 3KB
DemoApplicationTests.class 3KB
SearchResult.class 2KB
OcrUtil.class 2KB
VRController.class 1KB
OCRController.class 914B
DemoApplication.class 713B
mvnw.cmd 7KB
COMMIT_EDITMSG 16B
config 322B
d17a2bf50f38cf635d5fa71fea40e653c0c00e 44B
d57d9e2fcb3519c1abdd474d08d0a036c802f9 66B
d95117b783a485a7890841757591aabd19327e 1KB
dced8006208752b4f9e464250a8d466dd17fc7 74B
de37c0a285a87ac6e6d576450e07685e58e73d 129B
description 73B
df2854281f4cb6869e4830dd1a7abd1e946c18 4KB
df92a4d0405f7f24dce542f52839f7e18999d5 171B
dff337a4f159163f89b0fcd85814f10de0446f 44B
e20715e31507be4671326fea9757c0ad9e5d8e 46B
e2a64668cef4d1d8d76e73bcd1f0c89d0be9ca 99B
e38992034fa3c4918e735c488c48687aeef949 1KB
e38e06f2b8d1e862339219ebb02d68f5ed23fa 62B
e51a41ed64d153cbdf57f8a60386ed65735d91 45B
e7e513fd37994de7cb422d2908e0c480f09d10 201B
e7f1de0a23d6c72765576d26f959cf338ae875 45B
e82c40d922ac7c9f8c7aa2d40f49efee975a9e 200B
exclude 240B
f421a335df7b991128447f365c880f8128ff69 49B
f524fa6cb33f5425c03b585f9e43a070ceae26 70B
f948580fb38bceda2797a766307244e7f7c2c2 162B
FETCH_HEAD 124B
.gitignore 395B
HEAD 933B
HEAD 23B
index 2KB
maven-wrapper.jar 61KB
共 141 条
- 1
- 2
资源评论
铸键为犁
- 粉丝: 63
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功