Mit GdiPlus eine Bitmap komprimieren ohne GdiPlus.lib, mit reiner Api?
-
Es ist so unpraktisch. Viel mehr code, viel längere Kompilierzeiten, viel größere Programme, dann noch ne neue namespace.
Ich kann in Visual Basic die lib- und header-datei auch nicht einbinden. Wieso funktioniert es da mit reiner Api?
-
Viel mehr Code dürftest du nicht haben, da du ja nur einen Include-Verweis setzen musst und halt die paar Anweisungen die du brauchst. Längere Kompilierzeiten lassen sich durch vorkompilierte Header ins Nirvana drücken und das Programm dürfte auch nicht viel größer werden

Aber was meinst du damit, dass die GDI+ in VB "mit reiner Api" funktioniert? Eine API ist doch eine Benutzerschnittstelle, also (hier), dass du Programme vom OS aufrufen kannst.Probiers doch einfach mal aus, wenn's doch zu doof ist, kannst du's immer noch raushauen!
-
Hab grad noch gegoogelt ("C++ WinAPI bmp to jpg"), erster Treffer war dies hier

-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
CodeRed schrieb:
Es ist so unpraktisch. Viel mehr code, viel längere Kompilierzeiten, viel größere Programme, dann noch ne neue namespace.
Ich kann in Visual Basic die lib- und header-datei auch nicht einbinden. Wieso funktioniert es da mit reiner Api?Mehr Code? Jedes Feature kostet Satement.
COmpilezeit? Lächerlich, der GDI Plus Header kommt in den precompiled Header file und gut ist, das merkst Du nicht mal.
Und der Linker braucht auch nicht viel länger für die 5 Statements die Du dazu benötigst.VB Hat den Code in seiner Runtime und der wird eben immer mit rum geschleppt. Und die VB Runtime wird es mit der PictureBox nicht vel anders machen als GDI-Plus.
-
an Martin Richter:
1. Benutze ich die PictureBox nicht
2. Kann man mit der PictureBox keine Jpeg's speichern, deswegen nutze ich GDI in VB
3. Funktioniert GdiPlus auch mit VB5 über Apis, als Vb5 rauskam gab es noch kein gdiplus.
4. kann die VB-Runtime auch keine Jpegs speichern
5. geht es mir nicht darum zu diskutieren, ob es sinnvoll ist oder nicht. Ich habe meine Gründe warum ich es für sinnvoll halte.Gibt es sonst noch konstruktive Vorschläge?
-
VB macht es über LoadLibrary/GetProcAddress... also mach es einfach genauso...
Den VB-Code kannst Du fast 1-zu-1 in C verwenden.
Was ist Dein Problem?
-
Gut die benötigten Strukturen für C++ habe ich im Netz gefunden:
struct GdiplusStartupInput { unsigned int GdiplusVersion; void* DebugEventCallback; BOOL SuppressBackgroundThread; BOOL SuppressExternalCodecs; }; struct EncoderParameter { GUID Guid; // GUID of the parameter ULONG NumberOfValues; // Number of the parameter values ULONG Type; // Value type, like ValueTypeLONG etc. VOID* Value; // A pointer to the parameter values }; struct EncoderParameters { UINT Count; // Number of parameters in this structure EncoderParameter Parameter[10]; // Parameter values };Jetzt muss ich "{1D5BE4B5-FA4A-452D-9CDD-5DB35105E7EB}" und "{557CF401-1A04-11D3-9A73-0000F81EF32E}" in Variablen des Typs GUID Speichern. Wie mache ich das?
In VB sieht das so aus: CLSIDFromString StrPtr("{1D5BE4B5-FA4A-452D-9CDD-5DB35105E7EB}"), .GUIDDamit kann ich dann GdipSaveImageToFile aufrufen.
-
Dann ruf halt die Funktion "CLSIDFromString" auf!?
Entweder Du lädst sie mittel GetProcAddress oder direkt... das ist ganz Deiner willkür überlassen....
Auch solltest Du nicht vergessen Deinen Thread via "CoInitialize" zu initialisieren...
-
EIn GUID ist eine Struktur die aus meheren WORD's und DWORD's besteht. Die Struktur ist ein in den standard Windows Headern derfiniert. Man muss nicht einen Ascii String daz umwandeln. Zudem sind viele dieser Standard GUID's beeits in den Headern definiert. Man muss sie nur suchen.