API IIIF de récupération des images de Gallica
Présentation
L'API IIIF (International Image Interoperability Framework) est une API standardisée par le consortium IIIF permettant la manipulation homogène d'images indépendamment de leurs localisations physiques et des établissements qui les hébergent.
Console
Contexte
Il s'agit de définir, pour des grands entrepôts de documents numériques des interfaces permettant l'interopérabilité de leurs images (manuscrits, photographies, estampes, pages de livre, etc. etc.) en fournissant des métadonnées sur ces documents et des verbes de manipulation des images.
La Bibliothèque nationale de France, en tant que participant à cette communauté IIIF, propose l'accès à l'intégralité des images qui composent sa bibliothèque numérique Gallica, ce qui représente plus de 7 millions de documents et plus de 100 millions d'images.
Documentation
La documentation complète de l'API est présentée sur le site du consortium. Les restrictions à la BnF sont les suivantes :
- L'API Image (actuellement en version 3.0 de la spécification) - API implémentée en version 1.1 à la BnF
 - L'API Présentation (actuellement en version 3.0 de la spécification) - API implémentée en version 2.0 à la BnF
 - L'API de recherche et d'authentification (actuellement en version 1.0 de la spécification) - API non implémentées à la BnF
 
API Image
L'API Image est une API RESTful. Pour l'utiliser, il est nécessaire d'utiliser la syntaxe d'accès suivante :
{scheme}://{server}{/prefix}/{identifier}/{region}/{size}/{rotation}/{quality}.{format}.
schemeest le protocole utilisé ("https" à la BnF)servercorrespond au nom de l'hôte ("gallica" à la BnF)prefixà la localisation du service ("iiif" à la BnF)identifierest l'identifiant ark du document ou d'une vue du document (par exemple ark:/12148/btv1b7711259g) auquel on doit ajouter l'identification de vue (exemple : /f12 pour traiter la vue numéro 12 d'un document)regionest la zone sélectionnée dans l'image source (par exemple "3976,3143,870,618" permet une extraction à partir de l'image d'origine d'un rectangle commençant au pixel 3976 sur l'axe horizontal, 3143 sur l'axe vertical, et de dimension de 870 pixels de largeur et 618 pixels de hauteur)sizeest la taille de l'image cible générée en pixels. Si on choisit la valeurfull, l'image extraite est fournie à la meilleure taille disponible (voir la spécification)rotationcorrespond à un angle de rotation pour l'image cible (en degrés, dans le sens des aiguilles d'une montre; par exemple "90")qualitycorrespond à une transformation possible de l'image (par exemplenativeoudefaultpour le même format que l'original,graypour niveaux de gris, oubitonalpour une conversion en en noir et blanc). La valeurcolorest d'un usage déconseillé.formatcorrespond au format de l'image cible souhaité (png, jpg, jp2, pdf, gif, tif).
Exemples d'utilisation :
https://gallica.bnf.fr/iiif/ark:/12148/btv1b90017179/f15/0,1900,2400,1200/full/0/native.jpg
pour extraire une image commençant à 0 sur l'axe horizontal, 1900 sur l'axe vertical, de 2400 pixels en largeur et 1200 pixels en hauteur
https://gallica.bnf.fr/iiif/ark:/12148/btv1b9055204k/f1/full/1500,750/0/native.jpg
pour redimensionner l'image originale en une nouvelle image de 1500 pixels en largeur et 750 pixels en hauteur
https://gallica.bnf.fr/iiif/ark:/12148/bpt6k8801260t/f1/50,50,1500,1500/full/135/native.jpg
pour extraire une image commençant à 50 sur l'axe horizontal, 50 sur l'axe vertical, de 1500 pixels en largeur et 1500 pixels en hauteur, à laquelle on applique ensuite une rotation de 135°
https://gallica.bnf.fr/iiif/ark:/12148/btv1b90017179/f3/full/750,/30/bitonal.jpg
pour redimensionner l'image originale en une nouvelle image de 750 pixels en largeur, à laquelle on applique ensuite une rotation de 30°, puis que l'on convertit en noir et blanc
Métadonnées sur une image
Une requête se terminant par info.json à la suite de l'identifieur permet de récupérer les dimensions de l'image d'origine, par exemple :
https://gallica.bnf.fr/iiif/ark:/12148/btv1b90017179/f15/info.json
affiche, parmi les informations retournées, les dimensions 2400 en largeur et 3498 en hauteur sur cette image.
API Presentation
Métadonnées du document
L’API de présentation (ou Manifest API) est une API RESTful permettant d'obtenir, pour un document, des métadonnées riches (notice bibliographique, liens, droits, descriptions de chacune des vues de l’objet, potentiellement de régions particulières, etc.).
Exemple :
https://gallica.bnf.fr/iiif/ark:/12148/btv1b550076223/manifest.json
On y retrouve notamment des informations bibliographiques extraites de de la notice Dublin Core du document :
label - dc:sourcedescription - dc:titlemetadata:label:Title - dc:titlemetadata:label:Date - dc:datemetadata:label:Language - dc:languagemetadata:label:Repository - dc:sourcemetadata:label:Shelfmark - dc:sourcemetadata:label:Format - dc:formatmetadata:label:Creator - dc:creatormetadata:label:Relation - dc:relationmetadata:label:Type - dc:type
ainsi que des descriptions sur chacune des vues du document :
width- longueur de l'image d'origineheight- largeur de l'image d'originelabel- pagination logique de l'image@id- lien vers l'imagethumbnail- lien vers la vignette de l'image
Voir aussi
Plusieurs outils OpenSource permettent d'utiliser l'API IIIF et donc celle de la BnF. Les outils principaux sont présentés ci-dessous (une liste plus large est présente sur le site iiif.io).
- OpenSeaDragon (visualiseur Javascript)
 - Mirador (visualiseur Javascript)
 - IIPMooviewer
 
Des exemples d'utilisation de l'API IIIF de Gallica sont disponibles sur ce github. Des wrappers permettent d'utiliser cette API avec Python et R.
Accès
API Image (exemple)
https://gallica.bnf.fr/iiif/ark:/12148/btv1b90017179/f15/0,1900,2400,1200/full/0/native.jpg
API Presentation (exemple)
https://gallica.bnf.fr/iiif/ark:/12148/btv1b550076223/manifest.json
Fiche Technique
Version2
Formats techniquesJPEG / JPG TIFF
TechnologiesIIIF
SujetsImages
Licence