Créons un système de téléchargement de fichiers à l'aide de l'API Azure Computer Vision et du SDK Java d'Azure Storage

C'est Domo. Je suis désolé.

Je souhaite créer un système simple à l'aide de l'API Computer Vision, qui est l'un des services cognitifs Azure, et du SDK de stockage Microsoft Azure pour Java, qui est l'un des SDK Java pour Azure.

Agenda ――Ce que j'ai fait cette fois

Ce que j'ai fait cette fois

Cette fois, j'ai créé un système de téléchargement de fichiers simple. Bref, je l'ai fait avec la première chose à essayer, donc je n'ai pas réussi. Untitled.png

Fonction (1): télécharger un fichier à partir de l'écran et l'afficher à l'écran Fonction (2): les fichiers téléchargés créent automatiquement des images miniatures et les enregistrent en même temps

La base du système est Spring Boot, et l'affichage html et l'échange de données de formulaire sont Thymeleaf. J'ai utilisé des tutoriels /2.1/usingthymeleaf_ja.html # introduction à thymeleaf). Utilisez le SDK Azure dans Spring Boot pour interagir avec le stockage.

Cliquez ici pour l'image complète. Merci d'utiliser le modèle BootStrap.

Lorsque vous téléchargez un fichier à partir de la partie de téléchargement de fichiers sur le côté gauche スクリーンショット 2016-12-27 22.12.13.png

Plus de fichiers seront affichés スクリーンショット 2016-12-27 22.14.35.png

Cliquez pour voir l'image originale スクリーンショット 2016-12-27 22.17.03.png

Fonction de création de vignettes d'API Cognitive Services Computer Vision

Cette fois, j'ai utilisé l 'API Computer Vision pour traiter l'image miniature. L'API Computer Vision était à l'origine une API permettant de distinguer les visages et les expressions faciales des gens, ainsi que d'analyser et de classer ce qui se trouve dans l'image, mais en tant que sous-produit de cette fonction, une fonction appelée "créer une belle image miniature" Cela a aussi.

Ce n'est pas grave si vous pouvez considérer le «bon sentiment» comme «facile à comprendre ce qu'il y a dans l'image». Si le sujet est décalé vers la droite, si vous découpez l'image sans y penser, vous vous retrouverez avec une image miniature dont vous ne savez pas vraiment ce qu'est l'image. L'API Computer Vision analyse la position du sujet, rogne la zone autour du sujet à la taille spécifiée et crée une image miniature.

Par exemple, cette photo buzz.jpg

Si vous faites une vignette découpée en haut à gauche sans penser à rien, cela ressemblera à ↓ et vous vous retrouverez avec une vignette dont vous ne savez pas ce qu'est l'image. buss1.jpg

Si vous demandez à Computer Vision de l'analyser et de créer une vignette, elle aura l'air "bien" ↓ IMG_1351のコピー2.jpg

Si vous souhaitez essayer diverses choses avec vos propres photos, il existe une page de démonstration, alors essayez-la. Si vous souhaitez voir d'autres frais et d'autres fonctions, veuillez vous référer à ici.

Cognitive Services fonctionne en accédant directement à l'API.

Utiliser le stockage à partir du SDK Java

Azure Storage est un service de stockage de fichiers. Les données peuvent être enregistrées sous diverses formes telles que BLOB / fichier / file d'attente / table. Dans ce système, un conteneur (répertoire) est créé dans ce stockage, et l'image d'origine et l'image miniature sont enregistrées en tant que BLOB.

Cette fois, j'ai utilisé l'un des SDK, Microsoft Azure Storage SDK for Java. Il existe divers autres SDK Java pour Azure pour chaque service, assurez-vous donc de choisir le SDK pour le service que vous souhaitez utiliser. Le SDK pour Java est disponible dans le référentiel Maven (http://search.maven.org/#search%7Cga%7C3%7CAzure).

Ce n'est pas grave si vous ajoutez une dépendance avec Gradle.

dependencies {
・ ・ ・ ・ ・ ・
          compile 'com.microsoft.azure:azure-storage:4.0.0'
・ ・ ・
}

Veuillez consulter ici pour un exemple de son utilisation. D'autres supports liés à Java sont résumés à ici.

Divers sentiments que j'ai réellement essayés

Il y a une limite supérieure sur la taille de l'image qui peut être utilisée avec Computer Vision, mais cette fois, il n'y a pas de processus d'ajustement ou de vérification de la taille de l'image ... Ainsi, le téléchargement d'une image avec une taille de fichier supérieure à la limite supérieure est une erreur système. Arrivera ... Je voudrais l'améliorer plus tard. .. ..

En ce qui concerne le SDK Java, je ne savais pas lequel utiliser car les informations étaient rares au début, et je regardais le référentiel Maven, mais une fois que j'ai trouvé celui que je cherchais, je viens de définir les dépendances. , J'ai pu commencer à l'utiliser sans trop de problèmes. J'ai pu télécharger des fichiers et obtenir une liste en douceur.

Je pensais que je ne devrais pas le faire page de démonstration de l'API de vignettes de Computer Vision. La réponse étant binaire, elle sera renvoyée avec des caractères déformés. C'était aussi dans Java Code Sample, mais apparemment ʻEntityUtils.toString (entité) `est fait à la toute fin. C'est comme. Si vous convertissez les données d'image en une chaîne de caractères, ce serait le cas. Puisqu'il s'agit d'une page de démonstration de l'API, j'aimerais que vous voyiez une image dans la réponse.

En passant, pour utiliser l'exemple de code Java sur le document tel quel, il est nécessaire de getContent () l'entité (données d'image acquises). Cela ressemble à ceci ..

Enfin, j'ai donné le code que j'ai créé cette fois à GitHub. Pour être honnête, ça devient désordonné, alors j'aimerais faire quelques corrections et README.

Résumé

Puisqu'il y a encore peu d'informations liées à Java dans le stockage Azure et dans Computer Vision, j'ai pensé qu'il serait bon que le seuil soit abaissé s'il était encore amélioré. De plus, la situation actuelle est que tous les services Azure ne peuvent pas être utilisés à partir de Java, et il arrive souvent que Java (et Python) ne puisse pas être utilisé avec le service que vous souhaitez utiliser, je voudrais donc voir plus de zones pouvant être utilisées.

C'était tout.

Recommended Posts

Créons un système de téléchargement de fichiers à l'aide de l'API Azure Computer Vision et du SDK Java d'Azure Storage
Télécharger des fichiers à l'aide de Java HttpURLConnection
Créons une API REST à l'aide de WildFly Swarm.
Créons une bibliothèque d'opérations de stockage de fichiers polyvalente (?) En faisant abstraction du stockage / acquisition de fichiers avec Java
[Java] Créons un Minecraft Mod 1.16.1 [Fichier de base]
[Rails API + Vue] Télécharger et afficher des images à l'aide du stockage actif
[Java] Créer un fichier temporaire
[Java] Créons un Minecraft Mod 1.16.1 [Ajouter et générer des arbres]
[Java] Créons un Minecraft Mod 1.14.4 [9. Ajouter et générer des arbres]
[Java] Créons un Minecraft Mod 1.14.4 [8. Ajouter et générer du minerai]
Créer un projet Java à l'aide d'Eclipse
[Java] Créez un fichier jar compressé et non compressé avec la commande jar
[Java] Créer et appliquer un masque des diapositives
Créons un environnement de développement Java (mise à jour)
Créer un service d'API RESTful à l'aide de Grape
Créons un processus chronométré avec la minuterie de Java! !!
[Java] Créez quelque chose comme une API de recherche de produits
Essayez d'utiliser l'API Cloud Vision de GCP en Java
Créons un framework Web ultra-simple avec Java
[Java] Créons un Minecraft Mod 1.14.4 [Introduction]
[Java] Créons un Minecraft Mod 1.16.1 [Introduction]
[Java] Créons un Minecraft Mod 1.14.4 [99. Mod output]
Créez un éditeur de démarques par glisser-déposer dans Rails 6 (à l'aide d'Active Storage, SimpleMDE et Inline Attachment)
Créer un servlet Java et un fichier WAR JSP à déployer sur Apache Tomcat 9 avec Gradle