Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.24;
Скачать: CL | DM;

Вниз

каким способом можно быстро узнать разрешение файлов jpg и bmp?   Найти похожие ветки 

 
zorik ©   (2006-10-16 17:01) [0]

каким способом можно быстро узнать разрешение файлов jpg и bmp?


 
Jeer ©   (2006-10-16 17:03) [1]

ACDSee.


 
zorik ©   (2006-10-16 17:11) [2]


> Jeer ©   (16.10.06 17:03) [1]

:-)

Каким образом програмно узнать разрешение файлов jpg и bmp


 
Sapersky   (2006-10-16 18:03) [3]

http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988625329&n=21

Bmp - элементарно, чтение заголовка. Точнее, существует 2 типа заголовков, BITMAPINFOHEADER и BITMAPCOREHEADER. Отличить их можно по размеру (1-й dword). Перед заголовком нужно пропустить 14 байт. В общем, см. TBitmap.LoadFromStream.


 
Ketmar ©   (2006-10-16 18:17) [4]

GraphicsEx


 
Jeer ©   (2006-10-16 18:34) [5]

Был для jpg такой "жуткий" способ с использованием:

function ReadMWord(f: TFileStream): word;
type  TMotorolaWord = record
   case byte of
     0: (Value: word);
     1: (Byte1, Byte2: byte);
   end;

var  MW: TMotorolaWord;

begin
 f.Read(MW.Byte2, SizeOf(Byte));
 f.Read(MW.Byte1, SizeOf(Byte));
 Result := MW.Value;
end;

procedure GetJPGSize(const sFile: string; var wWidth, wHeight: word);
const  ValidSig : array[0..1] of byte = ($FF, $D8);
Parameterless = [$01, $D0, $D1, $D2, $D3, $D4, $D5, $D6, $D7];
var  Sig: array[0..1] of byte;
      f: TFileStream;
      x: integer;
      Seg: byte;
      Dummy: array[0..15] of byte;
      Len: word;
      ReadLen: LongInt;
begin
   FillChar(Sig, SizeOf(Sig), #0);
   f := TFileStream.Create(sFile, fmOpenRead);
   try
    ReadLen := f.Read(Sig[0], SizeOf(Sig));
    for x := Low(Sig) to High(Sig) do
      if Sig[x] <> ValidSig[x] then ReadLen := 0;
      if ReadLen > 0 then    begin
        ReadLen := f.Read(Seg, 1);
        while (Seg = $FF) and (ReadLen > 0) do      begin
           ReadLen := f.Read(Seg, 1);
           if Seg <> $FF then        begin
             if (Seg = $C0) or (Seg = $C1) then          begin
                 ReadLen := f.Read(Dummy[0], 3); { don"t need these bytes }
                 wHeight := ReadMWord(f);
                 wWidth := ReadMWord(f);
             end
             else begin
               if not (Seg in Parameterless) then            begin
                  Len := ReadMWord(f);
                  f.Seek(Len-2, 1);
                  f.Read(Seg, 1);            end
              else
                   Seg := $FF; { Fake it to keep looping. }          end;
              end;
           end;
         end;
        finally
                f.Free;
        end;
      end;


 
Думкин ©   (2006-10-17 06:47) [6]

ExtractFileExt function

Returns the extension portions of a file name.

Unit

SysUtils


 
Думкин ©   (2006-10-17 06:48) [7]

Тьфу ты - разрешение, а я расширение прочитал. :(



Страницы: 1 вся ветка

Текущий архив: 2007.06.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
15-1180505544
Эй.
2007-05-30 10:12
2007.06.24
FreeBSD


4-1168258490
BOB16
2007-01-08 15:14
2007.06.24
как получить информацию о HFONT-шрифте и поменять его


2-1180861988
Delf_
2007-06-03 13:13
2007.06.24
2 вопроса


15-1180521426
lopi
2007-05-30 14:37
2007.06.24
Как это делается?


2-1180783872
{RASkov}
2007-06-02 15:31
2007.06.24
ScanLine?