AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Mal wieder JPEG in Access
Thema durchsuchen
Ansicht
Themen-Optionen

Mal wieder JPEG in Access

Ein Thema von Corelgott · begonnen am 24. Aug 2005 · letzter Beitrag vom 24. Aug 2005
Antwort Antwort
Benutzerbild von Corelgott
Corelgott

Registriert seit: 11. Apr 2003
Ort: Lübeck
213 Beiträge
 
Delphi 2006 Enterprise
 
#1

Mal wieder JPEG in Access

  Alt 24. Aug 2005, 11:34
Datenbank: MS Access • Version: 2000 • Zugriff über: SysDSN; BDE
0Hi @ all,

ich habe mal ein **kleines** db problem.
Ich muss bilder in ne db speichern. Eigentlich kein Problem...
Einfach ein bild (bmp) in access und gut is...

Darüber ist unser admin aber nicht sooo glücklich, weil die bilder mitlerweile doch schon so ein paar gb belegen und der nicht einsieht dafür extra ne neue datensicherung zu bauen (die vorhandene extrem zu erweitern) ^^

(*ok der hat recht, und auch das recht deswegen zu meckern *)

so @ prob:

bilder als jpg in die datenbank

wenn ich in der db das feld als ole-obj definiere kann ich mit access ohne probs jpgs in einbauen.
Ich bekomme die mittlerweile auch gelesen (header überspringen 78byte usw ^^)

Aber wie zum geier bekomme ich per Delphi ein ole-obj wieder in die db zurück? und wie löse ich das mit dem header am besten?
(per hand schreiben och nö... )

Ich kann leider nicht einfach "raw" daten abspeichern, da man die bilder AUCH mit access anschauen können muss!! (ja das ist zwingend!)

Hat mal wer ein sniplet für mich?

thx für's denken & cya
Corelgott
  Mit Zitat antworten Zitat
nieurig

Registriert seit: 26. Apr 2004
113 Beiträge
 
Delphi 6 Professional
 
#2

Re: Mal wieder JPEG in Access

  Alt 24. Aug 2005, 13:44
Hallo Corelgott,
ich meine vor einer Weile mal einen Artikel gelesen zu haben, dass Access (zumindest Versionen 2000 und früher) immer ein Vorschaubild im bmp-Format erzeugt auch wenn die Grafik als jpg eingefügt worden ist. Die DB wird also riesig, wenn JPG's eingefügt werden.

Ich würde in der DB nur die Pfadnamen auf die JPG's einfügen.
Bei diesem Weg ist eine Anzeige in Access nur möglich, wenn dort bei einem Datensatzwechsel die Bilddaten in ein ImageObjekt geladen werden. Man müßte also in Access etwas programmieren.

Wenn das ImageObjekt disFoto heißt sieht das etwa so aus
Code:
disFoto.Picture = [DateiPfad]
wobei DateiPfad das Datenbankfeld wäre in dem die Datennamen gespeichert werden.

Das eigentliche Problem ist dann der Umstand, dass die Fotodaten gelöscht werden müßten, wenn der Datensatz gelöscht wird und dass u.U. gleiche Dateinamen verhindert werden müssen. Ebenfalls ein Fall für etwas Programmierung in Access oder Delphi, jenachdem von wo Datensätze erstellt und gelöscht werden.

Schöne Grüße
Niels
Erspare Dir die Gedanken über ungelegte Eier !!!
  Mit Zitat antworten Zitat
Benutzerbild von Corelgott
Corelgott

Registriert seit: 11. Apr 2003
Ort: Lübeck
213 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: Mal wieder JPEG in Access

  Alt 24. Aug 2005, 19:10
Hi nieurig,

hmm bist du dir sicher, dass wenn ich die daten als ole-jpg-obj definiere, dass Access dann auch diese Ole-Containerdaten castet?
Ich zeifel ein wenig daran, dass Access wirklich versucht herraus zu finden, was für einen typ die ole-daten haben....

Weil OLE kann ja prinzipiell alles.. vom video über wave bis hin zum richtext oder was weis ich...
Wenn ich da nun ein OLE-JPG-Obj drin habe....
Ist das doch eigentlich nur blob ole-daten oder?

Weil wenn ich das mit access in die db geklatschte jpg in einen delphi stream packe (blob + raw read + den header loswerden) dann komme ich auf die größe, die das orginalbild hatte...!! (also ab dem stream scheint es wieder zu passen!)
(Ok die differenz von 78 Byte lässt sich durch den OLE header erklären..
den bekomme ich da nämlich auch mit raus...)

Somit....
Ich bekomme ein Raw-Read-JPG aus einem Raw-Read-OLE...
Ist das dann nicht auch ein raw-jpg in der db??

??

**etwas verwirrt**


thx für's denken...

cya
Corelgott
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Mal wieder JPEG in Access

  Alt 24. Aug 2005, 19:42
Ich vermute mal ganz stark, das Ganze hat mit Struct Storage zu tun.
Das ist Microsoft's properitäres Format, um Daten hierarchisch zu speichern.
Leider ist das ganze struct storage API sehr kryptisch und es gibt kaum gute Delphi Kapselungen.
Ich würde mal versuchen mit Delphi eine OLE-Blob roh in eine Datei zu kopieren.
Dann mit einem struct storage Viewer reinschauen, ob sich die Datei öffnen lässt.
Dieser Viewer oder Editor wird manchmal auch als OLE DOC Viewer bezeichnet.
In der JCL1.95 ist ein struct storage Editor als Beispiel dabei, der hat aber einen Bug
Andreas
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Mal wieder JPEG in Access

  Alt 24. Aug 2005, 21:31
Habe mal irgendwo gelesen, das Access Informationen über das Programm speichert, mit dem die 'OLE' Daten (also, ich denk ja, einfach Binary) angezeigt werden können. Was passiert, wenn Du :
1. Ein JPEG per Access in ein Feld packst
2. Dir die ersten 78 Bytes einfach per Delphi irgendwo hin schreibst und diese 78 Bytes
3. Beim Speichern per Delphi einfach vorne ran beppst?

Ich kann (wie Du sicher weisst), eine BMP 1:1 per Delphi auslesen: Einfach Blob einlesen, die ersten 78 Bytes verschnippeln und fertig ist die Bitmap, mit Header und allem Drum und dran.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz