Форум: "Media";
Текущий архив: 2007.06.24;
Скачать: [xml.tar.bz2];
Внизкаким способом можно быстро узнать разрешение файлов 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 вся ветка
Форум: "Media";
Текущий архив: 2007.06.24;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.049 c