CLongBinary -> CBitmap
-
Ich habe mir ein Bild aus einer Datenbank geholt, welches ich nun in einem CLongBinary* habe.
Jedoch, wie kann ich den CLongBinary* in ein Bitmap umwandeln. Die MSDN schweigt sich darüber leider aus ...
-
Mal dumm gefragt: Wie kommt das Bild in den Binary?
Vielleicht kann man davon die Gegenrichtung abgucken.
-
Was soll den da drin sein!?
Prinzipiell kannst Du so auf die Daten zugreifen:CLongBinary b; LPVOID pData = GlobalLock(b.m_hData); // Jetzt mach was damit GlobalUnlock(b.m_hData);
-
Mal dumm gefragt: Wie kommt das Bild in den Binary?
Nun, ich habe mir das Bild so aus der Datenbank geholt. Gibts denn einen gängigeren Weg?
Zu Jochen Kalmbach:
Wie ich auf die Daten zugreife, ist mir klar! Jedoch wie schiebe (vorausgesetzt estartu weiß vielleicht eine propatere Methode) ich dieses LongBinary in ein Bitmap.
-
ChrisPlusPlus schrieb:
Mal dumm gefragt: Wie kommt das Bild in den Binary?
Nun, ich habe mir das Bild so aus der Datenbank geholt. Gibts denn einen gängigeren Weg?
Okay, du hast meine Frage falsch verstanden.
Irgendwer muss das Bild doch in die DB schreiben. Ich hatte nun gehofft, dass du an der Stelle eine Wandlung Bitmap->Binary hast, aus der sich erkennen lässt, wie man es andersrum machen muss.
-
ChrisPlusPlus schrieb:
Wie ich auf die Daten zugreife, ist mir klar! Jedoch wie schiebe (vorausgesetzt estartu weiß vielleicht eine propatere Methode) ich dieses LongBinary in ein Bitmap.
Du musst zuerst mal wissen, was für Daten in welchem Format Du da bekommst!
-
In diesem CLongBinary* befinden sich Bitmap-Daten!
-
Was sind denn "Bitmap-Daten"??? so einen Datentyp gibt es nicht (zumindest findedt ihm meine Hilfe nicht).
-
So, ich habe die Daten mal in ein char* konvertiert. Jedoch besteht das Problem noch immer
-
Chris, hast du Zugriff auf den Code, wo das Bitmap in die DB geschrieben wird?
-
Ja, Du hast die Frage immer noch nicht beantwortet, was Du da bekommen hast...
-
Leider nicht! Ich habe nur die Tabelle und die Bitmaps darin
-
Schade...
...weiter im Quiz.Woher hast du die Tabelle? Kannst du da ggf. mal fragen?
-
Speicher doch einfach mal die Daten als Datei und lade diese Dann normal mit LoadBitmap...
-
Dieses Tabellenfeld hat den Typ image (SQL-Server)
Ich habe mir den Inhalt des fraglichen Feldes mit
CDatabase *pDb = new CDatabase; pDb->OpenEx("my_database_connection_string"); CSetImages imageSet(pDb); imageSet.m_strFilter.Format("ima_id = 10"); imageSet.Open(); // typ vom feld IMAGE ist (SQL-Server image) char *pByte = (char*)GlobalLock(imageSet.m_IMAGE.m_hData); int nLength = static_cast<int>(imageSet.m_IMAGE.m_dwDataLength);
geholt. In diesen *pByte sind die Daten eines Bitmaps, und die hätte ich gerne in ein CBitmap geladen um sie anzeigen zu können.
-
Speicher doch einfach mal die Daten als Datei und lade diese Dann normal mit LoadBitmap...
Das ist nicht möglich, weil ich sehr performant sein muß.
-
Es war ja nur eine Idee, um zu sehen, ob es sich bei den Daten um eine "Datei" handelt...