Kennt jemand GDI-Plus?
-
Hallo
Um ein TIF-Bild in ein Bitmap umzuwandeln, habe ich aus dem Codeguru folgenden Code entnommen und angepasst:
#include "Gdiplus.h" using namespace Gdiplus; #pragma comment(lib, "gdiplus.lib") ------------------- GdiplusStartupInput gdiplusStartupInput; ULONG_PTR gdiplusToken; GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); Image Im = (L"C:\\Testfile.TIF"); CLSID BmpCodec; GetImageCLSID(L"image/bmp", &BmpCodec); Im.Save(L"C:\\Testfile.bmp", &BmpCodec, NULL); GdiplusShutdown(gdiplusToken); --------------- int GetImageCLSID(const WCHAR* format, CLSID* pCLSID) { UINT num = 0; UINT size = 0; ImageCodecInfo* pImageCodecInfo = NULL; GetImageEncodersSize(&num, &size); if(size == 0) return FALSE; pImageCodecInfo = (ImageCodecInfo*)(malloc(size)); if(pImageCodecInfo == NULL) return FALSE; GetImageEncoders(num, size, pImageCodecInfo); for(UINT i = 0; i < num; ++i) { if( wcscmp(pImageCodecInfo[i].MimeType, format) == 0 ) { *pCLSID = pImageCodecInfo[i].Clsid; free(pImageCodecInfo); return TRUE; } } free(pImageCodecInfo); return FALSE; }Funktioniert auch alles soweit so gut, aber nachdem das Bitmap erzeugt wurde, kommt im Destruktor von gdiplusbitmap.h
Image::~Image() { DllExports::GdipDisposeImage(nativeImage); // Hier }folgende Fehlermeldung:
Unbehandelte Ausnahme bei 0x7a0a24f6 in MeinProgramm.exe: 0xC0000005: Zugriffsverletzung-Leseposition 0x01cf3994.
Kann jemand damit was anfangen? Ich benutze VS .NET 2002
Vielen Dank!
-
Setz mal die vier Zeilen zwischen GdiplusStartup und GdiplusShutdown in einen {}-Block.
-
Hey genial, hat geklappt. Danke vielmals!
Kannst du mir aber noch verklickern, warum das was gebracht hat?
-
// fülle Schwimmbecken mit Wasser
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);// schwimme
Image Im = (L"C:\\Testfile.TIF");
CLSID BmpCodec;
GetImageCLSID(L"image/bmp", &BmpCodec);
Im.Save(L"C:\\Testfile.bmp", &BmpCodec, NULL);// entferne Wasser
GdiplusShutdown(gdiplusToken);
// Error: Schwimmen nicht möglichIn geschweiften Klammern wird am Ende das Objekt zerstört -> der Schwimmer steigt von alleine aus dem Wasser, bevor das Wasser entfernt wurde

-
Naja, ich glaube, in deinem Büro ist es etwas warm und du träumst nur noch davon, möglichst bald ins kühle Nass springen zu können
(nur zu verständlich)Ich hoffe jedenfalls, dass ich es verstanden habe.
Danke and have a nice and long weekend!
-
ich glaube, in deinem Büro ist es etwas warm
Ja, es ist verdammt warm
