Image::GetPropertySize, méthode (gdiplusheaders.h)
La méthode Image::GetPropertySize obtient la taille totale, en octets, de tous les éléments de propriété stockés dans cet objet Image . La méthode Image::GetPropertySize obtient également le nombre d’éléments de propriété stockés dans cet objet Image .
Syntaxe
Status GetPropertySize(
[out] UINT *totalBufferSize,
[out] UINT *numProperties
);
Paramètres
[out] totalBufferSize
Type : UINT*
Pointeur vers un UINT qui reçoit la taille totale, en octets, de tous les éléments de propriété.
[out] numProperties
Type : UINT*
Pointeur vers un UINT qui reçoit le nombre d’éléments de propriété.
Valeur retournée
Type : État
Si la méthode réussit, elle retourne Ok, qui est un élément de l’énumération Status .
Si la méthode échoue, elle retourne l’un des autres éléments de l’énumération Status .
Notes
Windows GDI+ stocke un élément de métadonnées individuel dans un objet PropertyItem . La méthode Image::GetAllPropertyItems retourne un tableau d’objets PropertyItem . Avant d’appeler Image::GetAllPropertyItems, vous devez allouer une mémoire tampon suffisamment grande pour recevoir ce tableau. Vous pouvez appeler la méthode Image::GetPropertySize d’un objet Image pour obtenir la taille, en octets, de la mémoire tampon requise. La méthode Image::GetPropertySize vous donne également le nombre de propriétés (morceaux de métadonnées) dans l’image.
Exemples
L’exemple suivant crée un objet Image basé sur un fichier JPEG. Le code appelle la méthode Image::GetAllPropertyItems de cet objet Image pour obtenir ses éléments de propriété (métadonnées).
#include <windows.h>
#include <gdiplus.h>
#include <stdio.h>
using namespace Gdiplus;
INT main()
{
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
// Create an Image object based on a JPEG file.
Image* image = new Image(L"FakePhoto.jpg");
// Find out how many property items are in the image, and find out the
// required size of the buffer that will receive those property items.
UINT totalBufferSize;
UINT numProperties;
image->GetPropertySize(&totalBufferSize, &numProperties);
// Allocate the buffer that will receive the property items.
PropertyItem* pAllItems = (PropertyItem*)malloc(totalBufferSize);
// Fill the buffer.
image->GetAllPropertyItems(totalBufferSize, numProperties, pAllItems);
// Print the ID of each property item.
for(UINT j = 0; j < numProperties; ++j)
{
printf("%x\n", pAllItems[j].id);
}
free(pAllItems);
delete image;
GdiplusShutdown(gdiplusToken);
return 0;
}
Le code précédent, ainsi qu’un fichier particulier, FakePhoto.jpg, ont produit la sortie suivante :
320
10f
110
9003
829a
5090
5091
La sortie précédente montre la valeur hexadécimale de chaque identificateur de propriété. Vous pouvez rechercher ces nombres dans Gdiplusimaging.h et découvrir qu’ils représentent les balises de propriété suivantes.
Valeur hexadécimale | Balise de propriété |
---|---|
0x0320 | PropertyTagImageTitle |
0x010f | PropertyTagEquipMake |
0x0110 | PropertyTagEquipModel |
0x9003 | PropertyTagExifDTOriginal |
0x829a | PropertyTagExifExposureTime |
0x5090 | PropertyTagLuminanceTable |
0x5091 | PropertyTagChrominanceTable |
Configuration requise
Client minimal pris en charge | Windows XP, Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | gdiplusheaders.h (inclure Gdiplus.h) |
Bibliothèque | Gdiplus.lib |
DLL | Gdiplus.dll |