OLE -> jpg -> lokal speichern

AleX

Erfahrenes Mitglied
hi,
leider hab ich schon wieder ein Problem und komm einfach nicht weiter.
Drum hoffe ich jetzt hier auf Hilfe :)

Mein Problem:
Ich lese mit VB6.0 aus einer MS Access Datenbank Bilder, die in dieser als OLE-Objekte liegen aus.
Diese werden auch korrekt in der Anwendung dargestellt, doch nun möchte ich diese lokal als normales jpg abspeichern.

Hab im Web und in diversen Foren nichts gefunden :-/

Bitte um Hilfe, schon mal im Vorraus danke
alex

UPDATE fürs Verständnis, ich stelle das pic in der Anwendung momentan in einer OLE-Komponente dar.
 
Zuletzt bearbeitet:
Sieh Dir mal die Funktion SavePicture etwas näher an, damit kannst Du den Inhalt eines Image- oder PictureBox-Controls als Datei abspeichern.
Ob das direkt als Jpeg möglich ist, weiss ich aber nicht - evtl. musst Du die Konvertierung von Bitmap nach Jpeg also zusätzlich noch machen.
 
jo, kenn ich schon.
Bringt aber halt nichts, da es gedacht ist ein jpg, giff ...
zu speichern und nicht wenn als rohdaten ein OLE-Objekt übergeben wird.
Zumindest siehts so aus. Er bringt dann als Fehler (Typen unverträglich)
 
Zeig mal Deinen Code und markier bitte die Zeile, bei der der Compiler einen Fehler ausspuckt.
In was für einem Objekt zeigst Du das Bild an und kannst Du das als Bitmap speichern? Wenn ja, dann gibt es etliche Beispielcodes (bei Planet Sourcecode z.B.) wie Du das in ein Jpeg umwandeln kannst.
 
hi, also code hab ich ja im Moment noch garkeinen. :rolleyes:

Im Moment:
Ich hab nen DataFeld data1 dem als Databasename die Access-DB angegeben ist.
Dann hab ich ein OLE-Feld, das als Datasource data1 und als DataField Bild (<- der Name der Spalte in der AccessDB, in der die Bilder als OLE-Objekte hängen)angegeben hat.

Nun kann ich mit dem data1 die Zeilen in der AccessDB nacheinander durchspringen und unten wird mir das OLE Objekt im OLE-Feld als Bild korrekt angezeigt.

Leg ich jetzt die selben eigenschaften des OLE-Feldes auf ein Image-Feld, kommt beim durchspringen der Bilder jedes mal die Fehlermeldung "Ungültiges Bild". <- Das ist ja auch klar, da in dem Ole noch der OLE-Header hängt usw...
Aber wie bekomem ich den weg, so dass ich das dargestellte 'Bild' als jpg abspeichern kann.

Hoffe dass das nun verständlich ist. ;-)
Sorry, wenns das beim ersten mal nicht wirklich war. Ist nur leider so, dass ich noch nie was mit VB gemacht hab und das nur ein Ausnahmefall ist, da das ganze per Java noch vielll schwerer ist.

alex
 
hi tdar2.

Danke, hilft mir aber leider auch nicht weiter.
In dem Beispiel ist das Bild ja von anfang an ein Image und nie ein OLE-Objekt.

Mein Problem ist, ich hab jetzt ein OLE-Objekt und will das als Bild speichen.

Das Bild sehe ich ja auch nur, wenn ich es einer OLE-Komponente hinzufüge. Wenn ich es einem Image übergeben will kommt ja der fehler, dass es ein ungültiges Bild ist.

Bitte, ist wichtig, kann mir denn keiner weiterhelfen?
 
Ich bin nicht ganz sicher, wie bei MS Access die Inhalte für binäre Felder verwaltet werden. Aber soweit ich weiss, werden in diesen Feldern die einzelnen Bytes der Binärdatei gespeichert.
Mit anderen Worten: Du kannst wahrscheinlich einfach die Bytefolge als Array auslesen und in eine Binärdatei schreiben.

Ob das klappt, kann ich Dir allerdings nicht definitiv sagen. Ist nur eine Vermutung...
 
Servus!

Wenn du das Bild, wie in meinem Beispiel per Drag'n'Drop aus dem "Drag" Kasten heraus, in den Dropkasten verschiebst, verwandelt sich das Bild auch in ein "OLE-Image" ... deswegen "caste" ich ja mit Data.getData(VBCFImage) ...

`Gibt glaube ich noch vbCFDIB (Device Independent Bitmap) und vbCFMETA ... versuchs doch mal mit einen der beiden ...

Musst eben nur die Datan aus der DB lesen und sie in den entsprechenden Datentyp "Casten" (Umwandeln) ---> vbCFImage bzw. alternativen... wenn du die Daten dann mal hast, kannst due sie mit der DLL wie im Link beschrieben als JPG speichern ...

Gruss Tom
 
Servus!

Ich bin nicht ganz sicher, wie bei MS Access die Inhalte für binäre Felder verwaltet werden. Aber soweit ich weiss, werden in diesen Feldern die einzelnen Bytes der Binärdatei gespeichert.

Das klappt auch, aber nur, wenn die Bilder auch als "byte Stream" in die DB gelangt sind ...(hab ich schon mal in der Java Ecke Demonstriert) sind sie jedoch per Drag'n'Drop oder per "Objekt-> Einfügen->Bitmap" eingefügt worden, sind es ganz normale OLE Objekte... um an die Bilder heran zu kommen, müssen sie jedoch zuerst mittels eines Casts aus dem "OLE-Container" heraus gezogen werden.

Gruss Tom
 

Neue Beiträge

Zurück