AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Array of TJepeg in Blob schreiben und lesen
Thema durchsuchen
Ansicht
Themen-Optionen

Array of TJepeg in Blob schreiben und lesen

Ein Thema von Smiley · begonnen am 15. Dez 2020 · letzter Beitrag vom 16. Dez 2020
Antwort Antwort
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
210 Beiträge
 
Delphi 12 Athens
 
#1

AW: Array of TJepeg in Blob schreiben und lesen

  Alt 15. Dez 2020, 21:22
Du meinst bestimmt das ZipForge Programm zum entpacken.
Hast Du ein Beispiel wie ich eine Zip Datei damit in einen Memory Stream bekomme ?
Und wie lese ich die einzelnen Dateien dann aus dem Stream ? den müsste ich ja irgendwie vom Typ her spezifizieren sonst ist es ja nur eine Ansammlung von Bytes.

Zum Array ging es mir ums Prinzip. Ich kann ja auch ein Dynamisches Array nehmen, da ich die Anzahl der Dateien in der Datenbank mit abspeichere.
Wollte nur wissen ob es sich drastisch auswirkt, wenn man ein größeres Array anlegt als das was man braucht und wie groß der Verlust ist.
Denke mir, wenn ich nur ein bild in ein Array of 100 reinschreibe, sollte der speicherverbrauch doch nor 1xBildgröße + etwas overhead sein oder irre ich mich da ?
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
210 Beiträge
 
Delphi 12 Athens
 
#2

AW: Array of TJepeg in Blob schreiben und lesen

  Alt 15. Dez 2020, 21:34
Die Beispiele von ZipForge zeigen immer nur wie man aus oder in eine Datei schreibt/liest.
Die Stream Versionen auch nur wie man von Datei in Stream oder Strem in Datei schreib.
Genau von dem Dateisystem will ich ja weg.
Und wie bekomme ich die Zipdatei aus dem Blob erst mal in einen Stream und von da aus in ein ansprechbares Array oder ObjectList ?
Manchmal helfen ja schon 2 zeilen um weiter zu kommen.
ObjectList ist mir neu, muss ich weiter lesen was mir das genau bringt. sieht aus als wäre das sowas wie eine Stringlist mit beliebigen Objekten.
Danke für die Anregung
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.029 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Array of TJepeg in Blob schreiben und lesen

  Alt 15. Dez 2020, 21:38
Ich denke du wirst nicht drumrumgekommen, die ZIP-Datei temporär auf der Platte zu speichern und z.B. bei ZiForge mittels ExtractToStream(Filename...) die Datei in das Image zu entpacken.
Michael Kübler
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
210 Beiträge
 
Delphi 12 Athens
 
#4

AW: Array of TJepeg in Blob schreiben und lesen

  Alt 15. Dez 2020, 22:06
Danke für die Antwort, dann nützt mir ZipForge aber auch nichts.
Meine Zip-Dateien sind nur maximal 5 bis 10Mb groß, die muss ich nicht auf die Platte kopieren, dann bin ich wieder da wo ich schon mit der alten Version war.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.384 Beiträge
 
Delphi 12 Athens
 
#5

AW: Array of TJepeg in Blob schreiben und lesen

  Alt 15. Dez 2020, 22:07
Warum nicht pro Blob "ein" Bild,
anstatt alles in einen Blob zu mantschen?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
210 Beiträge
 
Delphi 12 Athens
 
#6

AW: Array of TJepeg in Blob schreiben und lesen

  Alt 15. Dez 2020, 22:46
Die meisten meine DB-Einträge sind einzelne Bilder.
Es gibt jedoch auch Bildfolgen mit 120 Bildern pro Video.
Es macht wenig Sinn 120 Datensätze für ein Objekt abzulegen das man immer zusammen verwenden muss.
Habe noch nicht gesehen, dass jemand Videos als Einzelbilder abspeichert.
Es sind 120 Bilder die in einer Zeitlichen abfolge abgespielt werden.
Die Lösung für Einzelbilder habe ich ja schon gepostet, nur für die Videos klappt das noch nicht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.384 Beiträge
 
Delphi 12 Athens
 
#7

AW: Array of TJepeg in Blob schreiben und lesen

  Alt 15. Dez 2020, 23:10
Es gibt aber auch keinen Sinn etwas zusammenzupappen, was du dann sowieso wieder zerlegen mußt, um es zu benutzen.

Zitat:
zusammen verwenden
* immer zusammen nacheinander, aber eigentlich Einzeln
* oder wirklich zusammen, als ein Ding (z.B. als MJPEG oder ein anderes Videoformat)

Zitat:
z.B. bei ZiForge mittels ExtractToStream(Filename...)
Klingt für mich nicht nach Datei.
Stream -> TMemoryStream statt TFileStream und k.A. was "Filename" da oben zu suchen hatte, wenn es doch "Stream" heißt


Ja, die ZIP kann ein Stream sein
https://www.componentace.com/zip-stream-in-delphi.htm

aber auch die Dateien können aus einem Stream und bestimmt auch in einen Stream
https://www.componentace.com/add-str...-in-delphi.htm
https://www.componentace.com/zip-in-...-in-delphi.htm
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (15. Dez 2020 um 23:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
210 Beiträge
 
Delphi 12 Athens
 
#8

AW: Array of TJepeg in Blob schreiben und lesen

  Alt 16. Dez 2020, 10:32
@Himitsu
Die Beispiele von ComponetAce habe ich mir angesehen.

Zu deinem ersten Link
Zitat:
Ja, die ZIP kann ein Stream sein
Hier der Code aus dem Link
FileName := 'C:\test.zip';
OpenArchive(fmCreate);
BaseDir := 'C:\';
fileStream := TFileStream.Create('C:\test.txt', fmOpenReadWrite);
AddFromStream('anothername.txt', fileStream);
CloseArchive();

Bei den anderen Beispielen dasselbe, es ist immer nur eine Seite ein Stream, die andere Seite ist eine Datei.

Außerdem hat scrat1979 geschrieben
Zitat:
Ich denke du wirst nicht drumrumgekommen, die ZIP-Datei temporär auf der Platte zu speichern und z.B. bei ZiForge mittels ExtractToStream(Filename...) die Datei in das Image zu entpacken.
Und der muss es ja wissen.

Zitat:
@Himitsu
oder wirklich zusammen, als ein Ding (z.B. als MJPEG oder ein anderes Videoformat)
Das geht leider auch nicht, da ich nur eine Reihe von Bildern habe, die in einem Abstand von 40ms nacheinander abgespielt werden müssen.
Ein Video daraus zu machen bedeutet 40ms lang das gleiche Bild zu duplizieren und damit die Datei enorm aufzublähen.
Der Sinn dieser Bildfolge ist es mit möglichst wenigen Bildern eine noch flüssige Bewegung zu zeigen um Platz zu sparen.
Die optimalste Art das zu speichern ist meiner Ansicht nach, ein Jpeg-Array.

Meine Frage ist: Kann man ein Array aus Bildern in einen Blob speichern (sollte doch machbar sein)
und kann man sie auch wieder in diesem Format herausholen
und wie ist die Syntax dazu.

Der Code in meinem Beispiel unter
// Video einlesen und in Image schreiben
if (AktData.Typ = 'V') then
ist nur so dahingeschrieben um zu zeigen was ich machen will, ich denke nicht, dass es genauso machbar ist.

Trotzdem Danke dass Du Dir Gedanken dazu gemacht hast Himitsu

Geändert von Smiley (16. Dez 2020 um 10:42 Uhr)
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.118 Beiträge
 
Delphi 2009 Professional
 
#9

AW: Array of TJepeg in Blob schreiben und lesen

  Alt 16. Dez 2020, 17:28
Es macht wenig Sinn 120 Datensätze für ein Objekt abzulegen das man immer zusammen verwenden muss.
Damit stellst du aber allgemein die 1NF in Frage. Die 1NF bis 3NF sind denke ich allgemein anerkannt.

Möge Codd dir beistehen.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
210 Beiträge
 
Delphi 12 Athens
 
#10

AW: Array of TJepeg in Blob schreiben und lesen

  Alt 16. Dez 2020, 19:58
Damit stellst du aber allgemein die 1NF in Frage. Die 1NF bis 3NF sind denke ich allgemein anerkannt.
Ja ich könnte natürlich eine Master-Detail Tabelle machen und die Bilder in eine separate Tabelle auslagern, das bedeutet aber einiges an Overhead in der Datenbank und kompliziert das ganze etwas. Die Lösung von Himitsu gefallt mir da besser.
Ich hätte zu jedem Bild nochmal eine ID in der DetailDB.
  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 22:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz