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 scrat1979
scrat1979

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

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
 
#2

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.348 Beiträge
 
Delphi 12 Athens
 
#3

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
 
#4

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.348 Beiträge
 
Delphi 12 Athens
 
#5

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
 
#6

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
Benutzerbild von himitsu
himitsu

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

AW: Array of TJepeg in Blob schreiben und lesen

  Alt 16. Dez 2020, 13:30
Zitat:
Delphi-Quellcode:
fileStream := TFileStream.Create('C:\test.txt', fmOpenReadWrite);
AddFromStream('anothername.txt', fileStream);
Bei den anderen Beispielen dasselbe, es ist immer nur eine Seite ein Stream, die andere Seite ist eine Datei.
Ja klar, aber wie gesagt -> man kann auch TMemoryStream statt TFileStream verwenden, dann bleibt es im Programm
und der "Dateiname" in AddFromStream ist ja die "Addresse" innerhalb der Zip, wo man speichern oder auslesen will ... also passt schon.



MJPEG ist ein Stream, wo meistens am Anfang das Timing angegeben wird (z.B. die Pause von 40ms) und dann kommen viele JPEGs, die nacheinander angezeigt werden.
Wird z.B. gern von IP-Webcams benutzt, da man dafür kein "aufwändiges" Videoencoding in der Firmware braucht. (einfach nur Fotos machen und nacheinander ein neues JPEG ausgeben, was man mit dem vorherrigen Bild nicht unbedingt differenz-verrechnen muß)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (16. Dez 2020 um 13:33 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, 19:50
Zitat von himitsu:
man kann auch TMemoryStream statt TFileStream verwenden, dann bleibt es im Programm
und der "Dateiname" in AddFromStream ist ja die "Addresse" innerhalb der Zip, wo man speichern oder auslesen will ... also passt schon.
Wenn das funktioniert wäre das meine Lösung um die Daten aus der alten Datenbank auszulesen und dann als MJPEG neu abzuspeichern.
Ich müsste die Zip-Datei aus dem Blob lesen in einen Blobstream oder gleich einen Memory Stream. Dann die einzelnen Dateien B01 bis B120 in einen MJPEG schreiben und diesen dann in der neuen Datenbank in das Blob-Feld schreiben.
Geht das so ?
Wie verwendet man MJPEG ? (füllen,lesen,abspielen)
Habe mich noch nie MJEG beschaftigt.

Diese Lösung gefällt mir.
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.117 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 11:25 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