Image::GetPropertySize-Methode (gdiplusheaders.h)

Die Image::GetPropertySize-Methode ruft die Gesamtgröße aller in diesem Image-Objekt gespeicherten Eigenschaftenelemente in Bytes ab. Die Image::GetPropertySize-Methode ruft auch die Anzahl der Eigenschaftenelemente ab, die in diesem Image-Objekt gespeichert sind.

Syntax

Status GetPropertySize(
  [out] UINT *totalBufferSize,
  [out] UINT *numProperties
);

Parameter

[out] totalBufferSize

Typ: UINT*

Zeiger auf ein UINT , das die Gesamtgröße aller Eigenschaftselemente in Bytes empfängt.

[out] numProperties

Typ: UINT*

Zeiger auf ein UINT , das die Anzahl der Eigenschaftenelemente empfängt.

Rückgabewert

Typ: Status

Wenn die Methode erfolgreich ist, gibt sie OK zurück, ein Element der Status-Enumeration .

Wenn die Methode fehlschlägt, gibt sie eines der anderen Elemente der Status-Enumeration zurück.

Hinweise

Windows GDI+ speichert einzelne Metadaten in einem PropertyItem-Objekt . Die Image::GetAllPropertyItems-Methode gibt ein Array von PropertyItem-Objekten zurück. Bevor Sie Image::GetAllPropertyItems aufrufen, müssen Sie einen Puffer zuordnen, der groß genug ist, um dieses Array zu empfangen. Sie können die Image::GetPropertySize-Methode eines Image-Objekts aufrufen, um die Größe des erforderlichen Puffers in Bytes abzurufen. Die Image::GetPropertySize-Methode gibt Ihnen auch die Anzahl der Eigenschaften (Metadatenteile) im Bild an.

Beispiele

Im folgenden Beispiel wird ein Image-Objekt basierend auf einer JPEG-Datei erstellt. Der Code ruft die Image::GetAllPropertyItems-Methode dieses Image-Objekts auf, um seine Eigenschaftselemente (Metadaten) abzurufen.

#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;
}

Der vorherige Code hat zusammen mit einer bestimmten Datei FakePhoto.jpg die folgende Ausgabe erzeugt:

320
10f
110
9003
829a
5090
5091

Die vorherige Ausgabe zeigt den Hexadezimalwert der einzelnen Eigenschaftenbezeichner an. Sie können diese Zahlen in Gdiplusimaging.h nachschlagen und herausfinden, dass sie die folgenden Eigenschaftentags darstellen.

Hexadezimalwert Eigenschaftstag
0x0320 PropertyTagImageTitle
0x010f PropertyTagEquipMake
0x0110 PropertyTagEquipModel
0x9003 PropertyTagExifDTOriginal
0x829a PropertyTagExifExposureTime
0x5090 PropertyTagLuminanceTable
0x5091 PropertyTagChrominanceTable
 

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP, Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile gdiplusheaders.h (include Gdiplus.h)
Bibliothek Gdiplus.lib
DLL Gdiplus.dll

Weitere Informationen

Bild

Image::GetAllPropertyItems

Image::GetPropertyCount

Image::GetPropertyIdList

Image::GetPropertyItem

Image::GetPropertyItemSize

Image::RemovePropertyItem

Image::SetPropertyItem

PropertyItem

Lesen und Schreiben von Metadaten