![]() |
Alle Bilder eines jpeg?
Hallo,
wie ich in einigen "Reparaturtool" für jpg-Bilder gesehen habe, gibt es in einer jpg-Datei das Bild mehrfach, in verschiedenen Auflösungen. Wie kann man denn nun die einzelnen Bilder extrahieren? (Diese Tools bieten - zeigen - alle Bilder an und man kann auswählen, welches am wenigsten kaputt ist und das dann rausziehen. Bei mir war es oft so, dass das richtige, große kaputt war, während die kleineren - als Thumbnails? - noch vollständig waren.) Hat jemand eine Idee? Gruß Matthias |
Re: Alle Bilder eines jpeg?
Ich glaube in den EXIF-Infos zu JPEGS gibt es Möglichkeiten Thumbnails zu speichern. Ich habe damals eine Unit names dEXIF benutzt, aber auch hier im Forum wirst du einige Threads dazu finden.
|
Re: Alle Bilder eines jpeg?
Es hängt auch vom Format ab.
da gibt es welche, die z.B. am Anfang der Datei nur grobe/unscharfe Bilddaten haben und dann nach und nach die Deteils nachladen. Aber dort ist es so, wenn der Dateianfang futsch ist, dann ist es der Rest auch, da alles voneinander abhängt. |
Re: Alle Bilder eines jpeg?
Ich hab mal in meinem Archiv gekramt. Ich habe damals folgende Units benutzt (die ich leider nicht mehr finde)
Delphi-Quellcode:
Dazu hab ich mir folgende Prozedur geschrieben, die andere Prozeduren aus diesen Units aufruft:
jpegtool, dEXIF, dIPTC
Delphi-Quellcode:
Damit hab ich einen Thumbnail bekommen, den meine DigiCam (Canon Powershot A75) in das JPEG in den EXIF-Bereich automatisch reingepackt hat
function GetAspectedJpegThumb(FileName: String; ThumbWidth, ThumbHeight: Integer; Size: TPoint; FillColor: TColor = clWhite): TPicture;
Var Bmp: TBitmap; Pic: TPicture; Offset: Integer; begin Bmp:=TBitmap.Create; Pic:=TPicture.Create; Bmp.Width:=ThumbWidth; Bmp.Height:=ThumbHeight; Bmp.PixelFormat:=pf32bit; { Auch wenn kein Thumbnail vorhanden ist muss ein Bild ausgegeben werden } Bmp.Canvas.Brush.Color:=FillColor; Bmp.Canvas.FillRect(Rect(0,0,Bmp.Width,Bmp.Height)); Pic.Assign(Bmp); If HasJpegThumb(FileName) = False then raise EInvalidGraphic.Create('No Thumbnail found!'); ExtractJpegThumb(FileName,Pic); Offset:=Round((Bmp.Height-MulDiv(Bmp.Width,Size.Y,Size.X)) / 2); Bmp.Canvas.StretchDraw(Rect(0,Offset,Bmp.Width,Bmp.Height-Offset),Pic.Bitmap); Pic.Assign(Bmp); Result:=Pic; end; |
Re: Alle Bilder eines jpeg?
Hallo,
vielen Dank für den Codeschnipsel. Alles zu den Thumbs, was da drin steht, scheint aus der dExif zu stammen und die habe ich, zum Glück. Zurzeit scheint die ja nicht mehr zu kriegen zu sein. Gruß Matthias |
Re: Alle Bilder eines jpeg?
Falls sowas tatsächlich mal auftreten sollte, lohnt es sich, einen Blick in die
![]() Natürlich ist nicht sichergestellt, dass man die aktuelle Version bekommt. Aber das nur als allgemeiner Tipp. Edit: Hm, da findet man auch mehr als einem lieb ist. Bsp. sämtliche Units, ![]() Da wird also automatisiert auf Webseiten und sogar in Archiven (Zip, ...) gesucht. Verrückt. Aber das schweift vom Thema ab. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:40 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