[ Miloš Baić @ 29.04.2010. 13:57 ] @
Pozdrav,

zna li neko kako bih iz delphija mogao iščitati informacije o nekoj slici (veličina, rezolucija, etc., ono što slika nosi sa sobom), npr. da se zada putanja ka fajlu i da se iz njega iščitaju informacije o istom!?! Bitno mi je da funkcionalnost bude univerzalna, odnosno da važi za bilo koji format slike (jpg, jpeg, gif, png, etc.)...

Unapred se zahvaljujem...
[ sasaz2008 @ 29.04.2010. 15:36 ] @
Ne želiš da koristiš TPicture i time učitavaš ceo fajl čime ćeš dobiti sve osnovne podatke o slici? Želiš da na osnovu headera slika različitih formata/ekstenzija neka funkcija isčita osnovne podatke? Ako je ovo drugo, koliko je meni poznato ne postoji javno dostupno univerzalno rešenje, mada se može napraviti.
[ Miloš Baić @ 29.04.2010. 17:25 ] @
Trebala bi mi neka funkcionalnost koja će iščitati veličinu slike (KB, MB), rezoluciju (width/height u pixelima), horisontal / vertical resolution (dpi), color representation npr. sRGB.
[ sasaz2008 @ 29.04.2010. 17:32 ] @
Pogledaj ovo, možda ti pomogne:
http://www.velocityreviews.com...age-width-and-height-only.html
[ _deran_ @ 29.04.2010. 19:07 ] @
Code:
function JPEGDimensions(Filename : string; var X, Y : Word) : boolean;
var
  SegmentPos : Integer;
  SOIcount : Integer;
  b : byte;
begin
  Result  := False;
  with TFileStream.Create(Filename, fmOpenRead or fmShareDenyNone) do
  begin
    try
      Position := 0;
      Read(X, 2);
      if (X <> $D8FF) then
        exit;
      SOIcount  := 0;
      Position  := 0;
      while (Position + 7 < Size) do
      begin
        Read(b, 1);
        if (b = $FF) then begin
          Read(b, 1);
          if (b = $D8) then
            inc(SOIcount);
          if (b = $DA) then
            break;
        end; {if}
      end; {while}
      if (b <> $DA) then
        exit;
      SegmentPos  := -1;
      Position    := 0;
      while (Position + 7 < Size) do
      begin
        Read(b, 1);
        if (b = $FF) then
        begin
          Read(b, 1);
          if (b in [$C0, $C1, $C2]) then
          begin
            SegmentPos  := Position;
            dec(SOIcount);
            if (SOIcount = 0) then
              break;
          end; {if}
        end; {if}
      end; {while}
      if (SegmentPos = -1) then
        exit;
      if (Position + 7 > Size) then
        exit;
      Position := SegmentPos + 3;
      Read(Y, 2);
      Read(X, 2);
      X := Swap(X);
      Y := Swap(Y);
      Result  := true;
    finally
      Free;
    end;
  end;
end;