Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

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

Re: Fotos in einer DB komprimieren

  Alt 29. Sep 2006, 07:01
So eine verlustfreie Kompression (mit TCompressionStream) bringt aber nicht viel, denn die Bilder sind ja quasi verschlüsselt in der DB. Sie lassen sich mit einem normalen Programm nicht ohne Weiteres anzeigen.

Es gibt bei Delphi eine JPEG-Komponente, bzw. eine JPEG Unit, die Du einfach einbinden kannst. Dann gehst Du Record für Record durch deine Tabelle und wandelst eben Bild für Bild um.

Probiere es zunächst mit einem Bild auf der Festplatte. Ich würde das jetzt so machen:
Delphi-Quellcode:
MyBitmap.LoadFromFile('MyPic.BMP');
MyJpeg.Canvas.Draw (0,0, MyBitmap);
MyJPeg.SaveToFile ('MyPic.JPG');
Das klappt natürlich so nicht 1:1, aber im Prinzip lädst Du die Bitmap und zeichnes dieses Bild auf die Leinwand ('Canvas') des Jpeg-Objektes. Hinterher speicherst Du das wieder ab.

Anschließend liest du die Datei nicht per 'LoadFromFile' ein, sondern erstellst einen FileStream und lädst das Bild per 'LoadFromStream'.
Dann machst Du das Gleiche beim Speichern.

Und zum Schluss kommt der Stream nicht aus einer Datei, sondern von dem Blob-Feld ('TBlobField') der DB.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat