La dernière fois, j'ai fini de configurer la recherche d'images et d'importer des images. Cette fois, je vais essayer d'accéder à la recherche d'images que j'ai effectuée la dernière fois par programmation.
Cette fois, nous allons créer un projet en Java. Si vous ne disposez pas d'un environnement de développement Java, veuillez installer Java et Gradle. (L'échantillon est créé avec Gradle, mais Maven est également acceptable)
Référence: pour Windows + Scoop
PS C:\Users\user> scoop install oraclejdk14
PS C:\Users\user> scoop install gradle
Créons un projet Java
Créer un répertoire de projet
PS C:\Users\user\Documents\temp> mkdir imagesearch-sample
Directory: C:\Users\user\Documents\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2020/05/19 15:59 imagesearch-sample
PS C:\Users\user\Documents\temp> cd .\imagesearch-sample\
PS C:\Users\user\Documents\temp\imagesearch-sample>
Créer un projet Java
PS C:\Users\user\Documents\temp\imagesearch-sample> gradle init
Select type of project to generate:
1: basic
2: application
3: library
4: Gradle plugin
Enter selection (default: basic) [1..4] 2
Select implementation language:
1: C++
2: Groovy
3: Java
4: Kotlin
5: Swift
Enter selection (default: Java) [1..5] 3
Select build script DSL:
1: Groovy
2: Kotlin
Enter selection (default: Groovy) [1..2] 1
Select test framework:
1: JUnit 4
2: TestNG
3: Spock
4: JUnit Jupiter
Enter selection (default: JUnit 4) [1..4] 1
Project name (default: imagesearch-sample):
Source package (default: imagesearch.sample):
> Task :init
Get more help with your project: https://docs.gradle.org/6.4.1/userguide/tutorial_java_projects.html
BUILD SUCCESSFUL in 29s
2 actionable tasks: 2 executed
PS C:\Users\user\Documents\temp\imagesearch-sample>
PS C:\Users\user\Documents\temp\imagesearch-sample> tree /F
Liste des chemins de dossier:Volume Windows
Le numéro de série du volume est 9411-0B65
C:.
│ .gitattributes
│ .gitignore
│ build.gradle
│ gradlew
│ gradlew.bat
│ settings.gradle
│
├─.gradle
│ ├─6.4.1
│ │ │ gc.properties
│ │ │
│ │ ├─executionHistory
│ │ │ executionHistory.bin
│ │ │ executionHistory.lock
│ │ │
│ │ ├─fileChanges
│ │ │ last-build.bin
│ │ │
│ │ ├─fileHashes
│ │ │ fileHashes.bin
│ │ │ fileHashes.lock
│ │ │
│ │ └─vcsMetadata-1
│ ├─buildOutputCleanup
│ │ buildOutputCleanup.lock
│ │ cache.properties
│ │ outputFiles.bin
│ │
│ ├─checksums
│ │ checksums.lock
│ │
│ └─vcs-1
│ gc.properties
│
├─gradle
│ └─wrapper
│ gradle-wrapper.jar
│ gradle-wrapper.properties
│
└─src
├─main
│ ├─java
│ │ └─imagesearch
│ │ └─sample
│ │ App.java
│ │
│ └─resources
└─test
├─java
│ └─imagesearch
│ └─sample
│ AppTest.java
│
└─resources
PS C:\Users\user\Documents\temp\imagesearch-sample>
Ajoutez le SDK Alibaba Cloud.
build.gradle
/*
* This file was generated by the Gradle 'init' task.
*
* This generated file contains a sample Java project to get you started.
* For more details take a look at the Java Quickstart chapter in the Gradle
* User Manual available at https://docs.gradle.org/6.4.1/userguide/tutorial_java_projects.html
*/
plugins {
// Apply the java plugin to add support for Java
id 'java'
// Apply the application plugin to add support for building a CLI application.
id 'application'
}
repositories {
// Use jcenter for resolving dependencies.
// You can declare any Maven/Ivy/file repository here.
jcenter()
}
dependencies {
// This dependency is used by the application.
implementation 'com.google.guava:guava:28.2-jre'
// Alibaba Cloud
compile 'com.aliyun:aliyun-java-sdk-imagesearch:2.0.0'
compile 'com.aliyun:aliyun-java-sdk-core:[4.3.2,5.0.0)'
// Use JUnit test framework
testImplementation 'junit:junit:4.12'
}
application {
// Define the main class for the application.
mainClassName = 'imagesearch.sample.App'
}
Utilisez la clé d'accès et la clé secrète créées la dernière fois. Définissez également la région et le point de terminaison dans le tableau ci-dessous. Cette fois, nous définirons le Japon (Tokyo).
Région | point final |
---|---|
Singapour | imagesearch.ap-southeast-1.aliyuncs.com |
Chine(Hong Kong) | imagesearch.cn-hongkong.aliyuncs.com |
Japon(Tokyo) | imagesearch.ap-northeast-1.aliyuncs.com |
Australie(Sydney) | imagesearch.ap-southeast-2.aliyuncs.com |
Les images à rechercher sont placées dans / src / resources. Cette fois, je l'ai créé avec le nom "search01.jpg ".
App.java
/*
* This Java source file was generated by the Gradle 'init' task.
*/
package imagesearch.sample;
import java.io.InputStream;
import java.util.Base64;
import java.util.List;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.imagesearch.model.v20190325.SearchImageRequest;
import com.aliyuncs.imagesearch.model.v20190325.SearchImageResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
public class App {
/** AccessKey */
private static final String ACCESS_KEY = "XXXXXXXXXXXXXXXXXXX";
/** SeacretKey */
private static final String KEY_SEACRET = "YYYYYYYYYYYYYYYYYY";
public static void main(String[] args) throws Exception {
//Initialisation(Région de Tokyo)
DefaultProfile.addEndpoint("ap-northeast-1", "ImageSearch", "imagesearch.ap-northeast-1.aliyuncs.com");
IClientProfile profile = DefaultProfile.getProfile("ap-northeast-1", ACCESS_KEY, KEY_SEACRET);
IAcsClient client = new DefaultAcsClient(profile);
//Faire une demande de recherche
SearchImageRequest request = new SearchImageRequest();
//Entrée requise. Nom de l'instance de recherche d'images.
request.setInstanceName("itemsearch");
//Convertir l'image en Base64
ClassLoader loader = Thread.currentThread().getContextClassLoader();
InputStream is = loader.getResourceAsStream("search01.jpg ");
String image = Base64.getEncoder().encodeToString(is.readAllBytes());
//Recherche par image
request.setPicContent(image);
SearchImageResponse response = client.getAcsResponse(request);
//Résultats de recherche
Boolean checkShowJsonItemName = response.checkShowJsonItemName();
Integer code = response.getCode();
SearchImageResponse.Head head = response.getHead();
Integer docsFound = head.getDocsFound();
Integer docsReturn = head.getDocsReturn();
Integer searchTime = head.getSearchTime();
String msg = response.getMsg();
String requestId = response.getRequestId();
Boolean success = response.getSuccess();
SearchImageResponse.PicInfo picInfo = response.getPicInfo();
List<SearchImageResponse.PicInfo.Category> categories = picInfo.getAllCategories();
Integer categoryId = picInfo.getCategoryId();
String region = picInfo.getRegion();
System.out.printf("checkShowJsonItemName: %s%ncode: %s%ndocsFound: %s%nsearchTime:%s %nmsg: %s%nrequestId: %s%nsucess: %s%ncategoryId: %s%nregion: %s%n", checkShowJsonItemName, code, docsFound, docsReturn, searchTime, msg, requestId, success, categoryId, region);
categories.forEach(s -> {
Integer id = s.getId();
String name = s.getName();
System.out.printf("Categories %n\tid: %s, name: %s%n", id, name);
});
List<SearchImageResponse.Auction> list = response.getAuctions();
list.forEach(s -> {
System.out.println("-----------");
String productid = s.getProductId();
Integer categoryid = s.getCategoryId();
String customCountent = s.getCustomContent();
Integer intAttr = s.getIntAttr();
String picName = s.getPicName();
String sortExpValues = s.getSortExprValues();
String strAttr = s.getStrAttr();
System.out.printf("productId: %s %nCategoryId: %s %ncustomContent: %s %nintAttr: %s %npicName: %s %nsortExpValues: %s %nStrAttr: %s%n", productid, categoryid, customCountent, intAttr, picName, sortExpValues, strAttr);
});
}
}
checkShowJsonItemName: false
code: 0
docsFound: 11
searchTime:10
msg: 99
requestId: success
sucess: 85B66F6E-9932-4BF6-A05F-4AA0AF4D7CD5
categoryId: true
region: 9
Categories
id: 0, name: Tops
Categories
id: 1, name: Dress
Categories
id: 2, name: Bottoms
Categories
id: 3, name: Bag
Categories
id: 4, name: Shoes
Categories
id: 5, name: Accessories
Categories
id: 6, name: Snack
Categories
id: 7, name: Makeup
Categories
id: 8, name: Bottle
Categories
id: 9, name: Furniture
Categories
id: 20, name: Toy
Categories
id: 21, name: Underwear
Categories
id: 22, name: Digital device
Categories
id: 88888888, name: Other
-----------
productId: 1011
CategoryId: 9
customContent: k1:v12,k2:v211,k3:v311
intAttr: null
picName: 12.jpg
sortExpValues: 3.07306838035583;217
StrAttr: null
-----------
productId: 1010
CategoryId: 9
customContent: k1:v11,k2:v210,k3:v310
intAttr: null
picName: 11.jpg
sortExpValues: 2.97270393371582;222
StrAttr: null
-----------
productId: 1008
CategoryId: 9
customContent: k1:v09,k2:v208,k3:v308
intAttr: null
picName: 09.jpg
sortExpValues: 2.87724995613098;238
StrAttr: null
-----------
productId: 1009
CategoryId: 9
customContent: k1:v10,k2:v209,k3:v309
intAttr: null
picName: 10.jpg
sortExpValues: 2.79507827758789;235
StrAttr: null
-----------
productId: 1001
CategoryId: 9
customContent: k1:v02,k2:v201,k3:v301
intAttr: null
picName: 02.jpg
sortExpValues: 2.67687916755676;251
StrAttr: null
-----------
productId: 1004
CategoryId: 9
customContent: k1:v05,k2:v204,k3:v304
intAttr: null
picName: 05.jpg
sortExpValues: 2.67470407485962;249
StrAttr: null
-----------
productId: 1005
CategoryId: 9
customContent: k1:v06,k2:v205,k3:v305
intAttr: null
picName: 06.jpg
sortExpValues: 2.66586232185364;254
StrAttr: null
-----------
productId: 1003
CategoryId: 9
customContent: k1:v04,k2:v203,k3:v303
intAttr: null
picName: 04.jpg
sortExpValues: 2.63756942749023;255
StrAttr: null
-----------
productId: 1000
CategoryId: 9
customContent: k1:v01,k2:v200,k3:v300
intAttr: null
picName: 01.jpg
sortExpValues: 2.57631182670593;270
StrAttr: null
-----------
productId: 1006
CategoryId: 9
customContent: k1:v07,k2:v206,k3:v306
intAttr: null
picName: 07.jpg
sortExpValues: 2.52564144134521;253
StrAttr: null
Le même résultat que le résultat jeté de l'écran de gestion la dernière fois a été produit.
App.java
//Initialisation(Cas de la région de Tokyo
DefaultProfile.addEndpoint({regionId}, {product}, {endpoint});
IClientProfile profile = DefaultProfile.getProfile({regionId}, {accessKeyId}, {secret})
IAcsClient client = new DefaultAcsClient(profile);
Pour regionId, spécifiez "ap-Nord-Est-1" pour la région de Tokyo. Définissez "ImageSearch" pour le produit et l'URL du point de terminaison dans la liste ci-dessus pour le point de terminaison. le produit est une valeur fixe. Il est difficile de vérifier la valeur de regionId pour d'autres régions. .. ..
App.java
//Faire une demande de recherche
SearchImageRequest request = new SearchImageRequest();
//Entrée requise. Nom de l'instance de recherche d'images.
request.setInstanceName("itemsearch");
Une demande de recherche est préparée pour la recherche et un objet de demande d'ajout et de suppression est préparé pour l'ajout et la suppression, respectivement. Soyez prudent avec le nom de l'instance.
Vous devez spécifier le "nom" au lieu de l '"ID".
App.java
//Recherche par image
request.setPicContent({Image encodée BASE64});
SearchImageResponse response = client.getAcsResponse(request);
Cette fois j'ai cherché par image. Vous pouvez également rechercher par images enregistrées ou affiner par paramètres. Nous les vérifierons la prochaine fois.
Jusqu'à ici pour cette fois. Vous pouvez facilement effectuer une recherche à l'aide du SDK.
Recommended Posts