Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Funktion GetEncoderClsid im folgenden Beispiel empfängt den MIME-Typ eines Encoders und gibt den Klassenbezeichner (CLSID) dieses Encoders zurück. Die MIME-Typen der in Windows GDI+ integrierten Encoder sind wie folgt:
- image/bmp
- image/jpeg
- image/gif
- image/tiff
- image/png
Die Funktion ruft GetImageEncoders auf, um ein Array von ImageCodecInfo-Objekten abzurufen. Wenn eines der ImageCodecInfo-Objekte in diesem Array den angeforderten Encoder darstellt, gibt die Funktion den Index des ImageCodecInfo-Objekts zurück und kopiert die CLSID in die Variable, auf die pClsid verweist. Wenn die Funktion fehlschlägt, wird –1 zurückgegeben.
int GetEncoderClsid(const WCHAR* format, CLSID* pClsid)
{
UINT num = 0; // number of image encoders
UINT size = 0; // size of the image encoder array in bytes
ImageCodecInfo* pImageCodecInfo = NULL;
GetImageEncodersSize(&num, &size);
if(size == 0)
return -1; // Failure
pImageCodecInfo = (ImageCodecInfo*)(malloc(size));
if(pImageCodecInfo == NULL)
return -1; // Failure
GetImageEncoders(num, size, pImageCodecInfo);
for(UINT j = 0; j < num; ++j)
{
if( wcscmp(pImageCodecInfo[j].MimeType, format) == 0 )
{
*pClsid = pImageCodecInfo[j].Clsid;
free(pImageCodecInfo);
return j; // Success
}
}
free(pImageCodecInfo);
return -1; // Failure
}
Die folgende Konsolenanwendung ruft die GetEncoderClsid-Funktion auf, um die CLSID des PNG-Encoders zu bestimmen:
#include <windows.h>
#include <gdiplus.h>
#include <stdio.h>
using namespace Gdiplus;
#include "GdiplusHelperFunctions.h"
INT main()
{
// Initialize GDI+.
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
CLSID encoderClsid;
INT result;
WCHAR strGuid[39];
result = GetEncoderClsid(L"image/png", &encoderClsid);
if(result < 0)
{
printf("The PNG encoder is not installed.\n");
}
else
{
StringFromGUID2(encoderClsid, strGuid, 39);
printf("An ImageCodecInfo object representing the PNG encoder\n");
printf("was found at position %d in the array.\n", result);
wprintf(L"The CLSID of the PNG encoder is %s.\n", strGuid);
}
GdiplusShutdown(gdiplusToken);
return 0;
}
Wenn Sie die vorherige Konsolenanwendung ausführen, erhalten Sie eine Ausgabe ähnlich der folgenden:
An ImageCodecInfo object representing the PNG encoder
was found at position 4 in the array.
The CLSID of the PNG encoder is {557CF406-1A04-11D3-9A73-0000F81EF32E}.