Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bildgröße von Bilddateien (https://www.delphipraxis.net/394-bildgroesse-von-bilddateien.html)

sakura 22. Jul 2002 18:06

Kurz: ja, ich speichere meine JPG files oft mit JPEG
:cat:

Tpercon 22. Jul 2002 20:04

Wie unterscheide ich die denn jetzt voneinander?
Am Anfang steht bei beiden FF D8. Am 21. Byte habe ich beim jpg nen DB und beim jpeg nen EC nach dem FF. Kann ich danach gehen? Oder soll ich doch am Besten nach dem C0 und wenn dies nicht vorhanden ist, nach C2 suchen? Nur hierbei wäre der zeitl. Suchaufwand wohl größer, wobei das bei den Dateigrößen wohl eh keiner merkt.
Was meint ihr?

sakura 23. Jul 2002 06:51

Du solltest suchen. Dadurch dass nach dem Marker immer die Größe des Blockes kommt, kannst Du ja extrem shnell suchen. Sollte nicht auffallen. Wahrscheinlich kannst Du so danach suchen welcher zuerst kommt. Aber hier gibt es keine Garantien. :)
:cat:

d3g 23. Jul 2002 13:26

Hi Leute,

ich hab mich auch ein bisschen damit gespielt und irgendwie ist es bei mir so, dass (wenn es ein $FFC0 gibt), ich immer in den entsprechenden Bytes 160x120 als Größe habe, erst beim zweiten $FFC0 kommt die richtige Größe. Seltsame Sache, habt ihr auch so etwas ähnliches?

MfG,
d3g

Tpercon 23. Jul 2002 14:38

@ d3g: Nö, dass habe ich beim jpg nicht, wäre doch auch seltsam.
@ sakura: Wie würdest du danach suchen? Byteweise mit Read in ner Schleife auslesen?

Gruß

Tpercon 23. Jul 2002 17:36

Was haltet ihr von folgendem Code zum Suchen?

Code:
[b]procedure[/b] TForm1.Button1Click(Sender: TObject);
[b]var[/b]
  bild: integer;
  dmy: [b]array[/b][0..3] [b]of[/b] Char;
[b]begin[/b]
 [b]If[/b] OpenDialog1.Execute
 [b]then[/b]
  [b]begin[/b]
    bild := FileOpen(OpenDialog1.Filename, fmOpenRead);
    FileSeek(bild, 0, 0);
    [b]Repeat[/b]
      FileRead(bild, dmy, 2);
      FileSeek(bild, -1, 1);
    [b]Until[/b] (Ord(dmy[0]) = 255) [b]and[/b] ((Ord(dmy[1]) = 192)[b] or [/b](Ord(dmy[1]) = 194));
    FileSeek(bild, 4, 0);
    FileRead(bild, dmy, 4);
    [color=#000080][i]//Höhe[/i][/color]
    Label1.Caption := InttoStr(ord(dmy[0]) * 256 + ord(dmy[1]));
     [color=#000080][i]//Breite[/i][/color]
    Label2.Caption := InttoStr(ord(dmy[2]) * 256 + ord(dmy[3]));
    FileClose(bild);
  [b]end[/b];
[b]end[/b];
Es fehlt natürlich noch die Abfrage, ob die Extension .jpeg oder .jpg ( mit ExtractFileExt und AnsiLowerCase) ist.

Tpercon 23. Jul 2002 18:47

Hat jemand paar Infos über tif Dateien? Da stehen die Infos irgendwie nicht gerade am Anfang.

Tpercon 29. Jul 2002 11:52

So, ich verzweifel langsam echt an den tif bzw. tiff Teilen. Ich finde da nichts darüber raus. :cry:

sakura 29. Jul 2002 12:08

Ich hätte folgende Info über den Aufbau, habe zur Zeit aber nicht die Zeit, mir das genauer anzuschauen. Vielleicht hilft es ja.

Code:
          Header:
          0000 Byte Order    4D4D
          0002 Version  002A
          0004 1st IFD pointer    00000014
         
          IFD:
          0014 Entry Count   000D
          0016 NewSubfileType 00FE 0004 00000001  00000000
          0022 ImageWidth    0100 0004 00000001  000007D0
          002E ImageLength   0101 0004 00000001  00000BB8
          003A Compression   0103 0003 00000001  8005 0000
          0046 PhotometricInterpretation    0106 0003 00000001  0001 0000
          0052 StripOffsets  0111 0004 000000BC 000000B6
          005E RowsPerStrip  0116 0004 00000001  00000010
          006A StripByteCounts    0117 0003 000000BC 000003A6
          0076 XResolution   011A 0005 00000001  00000696
          0082 YResolution   011B 0005 00000001  0000069E
          008E Software 0131 0002 0000000E 000006A6
          009A DateTime 0132 0002 00000014  000006B6
          00A6 Next IFD pointer   00000000
         
          Fields pointed to by the tags:
          00B6 StripOffsets  Offset0, Offset1, ... Offset187
          03A6 StripByteCounts    Count0, Count1, ... Count187
          0696 XResolution   0000012C 00000001
          069E YResolution   0000012C 00000001
          06A6 Software "PageMaker 3.0"
          06B6 DateTime "1988:02:18 13:59:59"
         
         
          Image Data:
          00000700  Compressed data for strip 10
          xxxxxxxx Compressed data for strip 179
          xxxxxxxx Compressed data for strip 53
          xxxxxxxx Compressed data for strip 160
...:cat:...

jbg 29. Jul 2002 12:18

Du kannst auch mal in die GraphicEx Unit schauen. Dort werden so einige Grafikformate eingelesen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:05 Uhr.
Seite 3 von 4     123 4      

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