AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stream schnell durchsuchen

Ein Thema von Hador · begonnen am 26. Nov 2006 · letzter Beitrag vom 27. Nov 2006
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Stream schnell durchsuchen

  Alt 27. Nov 2006, 09:14
Zitat von flossinger:
ich bin mir da nicht sicher, aber vielleicht würd es auch etwas bringen, die Daten gleich in einen stringstream zu lesen und den string zu untersuchen, anschliessend sind die Daten schon im Speicher.
Da es sich aber um Binärdaten handelt (Siehe 1. Post) ist ein StringStream keine gute Idee.

@Mavarik:
Ganz einfach:
Die Streams machen afaik intern nichts anderes, aber man hat im OOP-Sinne eine schöne Klasse, mit der man alles machen kann.
Ferner kann man den Stream dann auch ganz einfach in ein TJPEGImage laden (LoadFromStream)
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Stream schnell durchsuchen

  Alt 27. Nov 2006, 09:24
Zitat von Mavarik:
Hallo!

Warum versucht hier eigentlich jeder das mit Streams zu lösen?
Ich löse sowas mit Streams weil Delphi für Object-Pascal steht und ich bei Objectorientierter Programmierung eher den Durchblick behalte. Nächster Vorteil: Wenn die Streamklasse geändert wird (für große Dateien etc.) so brauch ich nicht all meine Programme ändern da sie alle die gleiche Klasse verwenden. Bei der Hand zu Fuß-Variante muss ich in all meinen Programmen die neuen Funktionen manuell nachrüsten.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#13

Re: Stream schnell durchsuchen

  Alt 27. Nov 2006, 09:35
Moin,

aus der Sicht eines alten Vogels existieren die I/O-Routinen aus der TP-Zeit schon lange nur noch aus Gründen der Abwärtskompatibilität. Dass sich die modernen Stream-I/O Komponenten endgültig durchsetzen werden ist nur noch eine Frage der Zeit. Der kurze Kampf zwischen dem CP/M orientierten FCB (file control block) und dem UNIX file handle wurde von Microsoft mit Einführung von MS DOS 2.10 bereits für entschieden erklärt. Damals hat man sich entschieden das XENIX I/O-Konzept für MS-DOS zu adaptieren. Heute setzen Streams direkt auf den vereinheitlichten I/O-Routinen des Betriebssystems auf, wärend ein FCB (Assign, Reset, Rewrite, Close) eine unnötige gepufferte Zwischenschicht darstellt, die TP aus seiner CP/M-Zeit mitbrachte. Den OO-Charakter würde ich nicht so strapazieren, da es kein Problem darstellt auch für einen FCB eine OO-Kapsel zu stricken.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#14

Re: Stream schnell durchsuchen

  Alt 27. Nov 2006, 10:16
Du suchst nach $FF $D9 als Marker

1.) bedenkst du auch das JPEGs in Litte Endian wie auch Motorola Big Endian Format gespeichert sein können ? Also $D9 $FF wäre ebenfalls eine gültige Signatur je nachdem welches Format das JPEG benutzt

2.) warum Suchen wenn man aus dem JPEG Format direkt die Position und Typ des Thumbsviews ermitteln kann ? Was du da codest ist eine Brute Force Methode, sehr ineffiziente Vorgehensweise

3.) das nächste mal bitte Suche nutzen -> http://www.delphipraxis.net/internal...+exif&start=20

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: Stream schnell durchsuchen

  Alt 27. Nov 2006, 10:21

Also so langsam habe ich echt das Gefühl, dass keiner meinen Anfangsbeitrag gelesen hat.
Ich suche weder nach einem String (@flossinger) noch möchte ich das Thumb aus einer JPEG-Datei extrahieren (@Hagen).
Ich möchte das Thumbnail aus einem Bild, welches im Canon Rohdatenformat (*.CR2) vorliegt extrahieren.
Dieses - das Thumb - liegt im JPEG-Format vor.
Es beginnt immer beim Offset $2600 und ich muss lediglich das Ende herausfinden.
Dabei ist nicht davon auszugehen, dass das Format der JPEGs unterschiedlich ist.

EDIT:
Ich habe übrigends die Suche genutzt.
Doch leider gibt es zu dem Thema fast nichts in der DP.
Eigentlich wäre es mir bspw. auch lieber das Format direkt zu interpretieren und nicht auf die Thumbs zurückzugreifen, aber das habe ich mittlerweise schon (fast) verworfen.
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#16

Re: Stream schnell durchsuchen

  Alt 27. Nov 2006, 12:09
Hallo Lars,

ich kann nicht glauben, dass du nach einem Ende suchen musst. Da es sich bei CR2 um ein TIF-Format handelt, sollte sich doch irgendwo eine Längen-Information finden lassen. Die Start-Info ist ja auch verzeigert. Hast du dich denn schon als Entwickler bei Canon registrieren lassen? Dann hast du Zugriff auf den SDK und ich erwarte da auch ein paar Informationen. Vielleicht nicht zu der proprietären Verschlüsselung, von der ich gelegentlich lese, aber auf alle Fälle zu den Tags.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#17

Re: Stream schnell durchsuchen

  Alt 27. Nov 2006, 14:38
Zitat:
Also so langsam habe ich echt das Gefühl, dass keiner meinen Anfangsbeitrag gelesen hat.
Tja, dann soltest du auch mal die Antworten richtig lesen

Zitat:
Dieses - das Thumb - liegt im JPEG-Format vor.
Es beginnt immer beim Offset $2600 und ich muss lediglich das Ende herausfinden.
Dabei ist nicht davon auszugehen, dass das Format der JPEGs unterschiedlich ist.
Und das erklärt doch alles:

1.) Erzeuge eine Stream auf deine Datei
2.) Setzte STream.Position := $2600
3.) rufe LoadJüegThumb(Steam) aus meinem Attachment auf

fertig. Nichts mit Suche im Stream oder sowas Brute Force mäßiges. Die Unit in meinem Attachment liest dabei gezielt das JPEG (eg. TIFF -> JIF) Format aus und ermittelt wo und in welcher Größe das Jpeg-Thumb gespeichert wurde.

Am bestens einfach mal ausprobieren und wenn es funktioniert dann wird es weitaus schneller funktionieren als deine Brute Force Methode. Und wenn es funktioniert dann heist dies auch das Du die Antworten nicht richtig liest und Andere sehr wohl deine Frage gelesen haben und auch verstanden haben dir eine Lösung anzubieten. Immerhin willst du etwas und die Anderen schenken dir eine Antwort, kostenlos wohlgemerkt (mann könnte dir ja auch den Stundenlohn in Rehcnung stellen in der dir die Anderen ihre Zeit opfern).

Gruß Hagen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 14:10 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