L'extension Image contient trois API permettant de rechercher les images cataloguées d'une colonne de table. Ces API ne diffèrent que par le format des données d'entrée, à savoir une chaîne ou un objet de requête :
API | Données d'entrée |
---|---|
QbQueryStringSearch | Chaîne de requête |
QbQuerySearch | Descripteur de l'objet de requête |
QbQueryNameSearch | Nom de l'objet de requête |
Pour ces trois API, vous devez également :
Vous devez également pointer sur un tableau de structures de sortie afin que les résultats de la recherche y soient placés. Ensuite, l'extension Image renvoie dans ces structures les indicateurs des images cibles dont les valeurs de caractéristique sont les plus proches de celle de la requête. Elle renvoie également un score pour chaque image qui précise le degré de similarité de la valeur de caractéristique de l'image par rapport à la requête. Cette structure est définie dans le fichier (en-tête) d'inclusion pour QBIC, dmbqbapi.h, comme suit :
typedef struct{ char imageHandle[MMDB_BASE_HANDLE_LEN+1]; SQLDOUBLE SCORE } QbResult;
Vous devez affecter un tableau suffisamment grand pour contenir le nombre maximal de résultats et pointer sur ce tableau dans l'API. Vous devez également pointer sur un compteur : l'extension Image lui attribue une valeur en fonction du nombre des résultats qu'elle renvoie.
Dans l'exemple ci-dessous, l'API QbQueryStringSearch est utilisée pour effectuer une requête QBIC sur les images cataloguées d'une colonne de table. Notez que le pointeur sur la portée de la requête est défini par 0.
QbResult returns[MaxQueryReturns]; SQLINTEGER maxResults=qbiMaxQueryReturns; SQLINTEGER count; QbQueryHandle qHandle; QbResult results[qbiMaxQueryReturns]; rc=QbQueryStringSearch( "QbColorFeatureClass color=<255, 0, 0>" /* chaîne de requête */ "Employés", /* table utilisateur */ "photo", /* colonne image */ maxResults, /* nombre maximal de résultats */ 0, /* pointeur sur la portée de la requête * / qbiArray, /* stockage de résultats dans un tableau */ &count, /* nombre d'images renvoyées */ results); /* tableau des résultats renvoyés */
La requête ci-dessous permet d'effectuer la même recherche à l'aide de l'API QbQuerySearch. Notez que le descripteur de l'objet de requête est défini comme données d'entrée.
QbResult returns[MaxQueryReturns]; SQLINTEGER maxResults=qbiMaxQueryReturns; SQLINTEGER count; QbQueryHandle qHandle; QbResult results[qbiMaxQueryReturns]; rc=QbQuerySearch( qHandle, /* descripteur de l'objet de requête */ "Employés", /* table utilisateur */ "photo", /* colonne image */ maxResults, /* nombre maximal de résultats */ 0, /* pointeur sur la portée de la requête * / qbiArray, /* stockage de résultats dans un tableau */ &count, /* nombre d'images renvoyées */ results); /* tableau des résultats renvoyés */