jpg-Dateien und MFC
-
Erst mal vielen Dank für die schnelle Antwort...
Hat leider (noch) nichts gebracht... Zunächst liess sich kein String eintragen, der den Bildnamen angibt (braucht ja an der Stelle auch nen Long und keinen String).. habs dann mit ner Konvertierung über LPOLESTR probiert, hat dann aber zur Folge gehabt, dass das Programm abstürzt...
Aufruf über DrawPic(m_bild);
Deklaration: void DrawPic(IPicture* bild)
Danke nochmal...
und das 2. Problem (das des Speicherns) ist damit leider auch nicht gelöst
Guss
Stefan
-
der LPOLESTR ist auch nur (w)char-array
wenn der pfad zur datei in einem CString steckt müsste .GetBuffer() reichen. gegebenfalls diesen pointer den GetBuffer zurückliefert einfach casten.
zum speichern kommts drauf an ob auch ein einfachs kopieren der datei genügt - CopyFile()
-
Ne.. einfach CopyFile() wär ja zu einfach...
Sinn und Zweck der Übung ist es, das Bild (ggf. später auch ein *.bmp) als jpeg zu speichern... Ich hab das ganze mal mit VB6.0 gemacht, da war es einfach weil einfach ne dll/Komponente eingebunden wurde, die mir die ganze Funktionalität zu Verfügung stellte..
Danke noch mal für die Antwort, werde das mit .GetBuffer() mal probieren...
Wenn noch jemand Anregungen hat.. bin für alles dankbar
Gruss
Stefan
-
Habs jetzt mal mit .GetBuffer(); versucht.. funzt auch nicht.. hier mal der Codeschnipsel aus der Pictest3Dlg.cpp :
[cpp][code]
CString name="15.jpg";
LPTSTR n=name.GetBuffer(6);
OleLoadPicturePath(n, 0, 0, 0, IID_IPicture,(void **)&m_bild);
DrawPic(m_bild);Die Methode
void DrawPic(IPicture* bild) ^
{ ... }
steht ebenfalls ind der cpp-Dateider Aufruf allerdings führt zum Programmabsturz (ohne Kompiler/Linker Fehler)
Gruss und Danke
Stefan
-
also ich habs jetzt kurz getestet.
erstens muss es ein absoluter und kein relativer pfad sein. dazu darf der aufruf zum zeichnen nicht in einer initialisierungs funktion stecken da sonst kein bild angezeigt wird, er muss also später erfolgen .. nach der initialisierung. und muss erneut gezeichnet werden wenn ein fenster drüber geht oder außerhalb vom sichtbaren desktop bewegt wird .. hier eventuell OnPaint().
beim speichern und dazu in einem anderen dateiformat ist etwas komplizierter. vielleicht solltest du hier eher nach entsprechenden libraries suchen die das machen. kennen tu ich da jetzt keine.
-
Habe jetzt den Funktionsaufruf für DrawPic(IPicture* bild) in die Funktion OnButton() gesetzt, und als Dateiname den kompletten Pfad "d:\\15.jpg" angegeben... funzt trotzdem nicht.. permaneter Absturz nach Drücken auf Button1 ...
weiss auch nciht mehr weiter...
Danke und Gruss
Stefan
-
OleLoadPicturePath erfordert einen Unicode-String. Du solltest also L"d:\\15.jpg" schreiben.
Ansonsten mit F5 den Debugger starten, der zeigt Dir dann schon die fehlerverursachende Stelle.
-
ok.. habs jetzt mit L"bild15.jpg" probiert... Juhu.. es tut...
bleibt nur noch das Prob mit dem Speichern.... habe da was von GDI+ gelesen.. wer das mal versuchen, wenn ich die header-Datei finde.. auf meinem XP-Rechner ist sie nicht

Vielleicht kann mir ja noch jemand was zu CImage sagen... keine Ahnug, wie das eingebunden werden soll
Danke....
Gruss
Stefan
-
stefan-rw schrieb:
Vielleicht kann mir ja noch jemand was zu CImage sagen... keine Ahnug, wie das eingebunden werden soll
atlimage.h einbinden und dann hast du alle Methoden in der MSDN erklärt so schwer is das doch nicht
schaust du hier:
http://msdn.microsoft.com/en-us/library/5eb252d0(VS.80).aspxLaden sollte dann schon mal klar sein, Zeichnen geht einfach über BitBlt und save wirst du auch noch finden so schwer is das nun wirklich nicht, hab das selber schon mal verwendet und das is eigentlich einfach. ich weiss net wo das problem da liegt, ansonnsten noch mal genauer nachfragen wo du probleme hat
-
hehe.. habe gestern noch mal meine ganzen HDD's gecheckt... habe weder die atlimage.h noch die gdiplus.h ...
...
Wenn ich die hätte, wärs wohl einfacher *grins*
hat jemand ne Downloadadresse für mich... wär echt nett
Danke
Stefan
-
Wie wäre es mit der FAQ. Dort ist alles was Du brauchst.