Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как определить размер изображения в файле? 
:(
    Опции темы
Первый
  Дата 7.4.2003, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 21.3.2003

Репутация: нет
Всего: нет



Есть файл-раисунок. Нужно определить рамеры изображения, находящегося в нём.
PM MAIL   Вверх
<Spawn>
Дата 7.4.2003, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Может SizeOf или FileSize?


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
stab
Дата 7.4.2003, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



<Spawn> да не имеется в виду высота, ширина картинки...


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
stab
Дата 7.4.2003, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



2 Первый а что за фомат картиник? bmp, jpg, gif...


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Song
Дата 7.4.2003, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Width/Height


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Vit
Дата 7.4.2003, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Зависит от формата картинки


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
man2002ua
Дата 8.4.2003, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 943
Регистрация: 12.11.2002
Где: Киев

Репутация: нет
Всего: 2



// для *.bmp

var bmp: TBitmap;
begin
bmp := TBitmap.Create;
bmp.LoadFromFile('c:\file.bmp');
MessageDlg('Width='+inttostr(bmp.Width)+#13+'Height='+inttostr(bmp.Height),
mtConfirmation,[mbok],0);
end;


--------------------
"Нет ничего более постоянного, чем временное"
PM MAIL   Вверх
stab
Дата 8.4.2003, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



2 man2002ua тут наверно вся фишка вопроса в том, что б не загружаю картинку узнать размер smile.gif и это просто:

Код

function GetBMPDimensions(fn: String): TPoint;
var
 fs: TFileStream;
begin
 fs := TFileStream.Create(fn, fmOpenRead);
 fs.Position := $12;
 fs.Read(Result, SizeOf(Result));
 fs.Free;
end;

function GetGIFDimensions(fn: String): TPoint;
var
 fs: TFileStream;
 pt: TSmallPoint;
begin
 fs := TFileStream.Create(fn, fmOpenRead);
 fs.Position := $6;
 fs.Read(pt, SizeOf(pt));
 fs.Free;
 Result.X := pt.x;
 Result.Y := pt.y;
end;

function GetJPEGDimensions(fn: String): TPoint;
var
 fs: TFileStream;
 pt: TSmallPoint;

 function NextMarker: Byte;
 var
   b: Byte;
 begin
   Result := 0;
   while True do begin
     repeat
       fs.Read(b, SizeOf(b));
     until b = $FF;

     repeat
       fs.Read(b, SizeOf(b));
     until b <> $FF;

     if b <> 0 then begin
       Result := b;
       Break;
     end;
   end;
 end;

begin
 fs := TFileStream.Create(fn, fmOpenRead);
 while not (NextMarker in [$C0..$CF]) do;
 fs.Seek(3, soFromCurrent);
 fs.Read(pt, SizeOf(pt));
 fs.Free;

 pt.x := ((pt.x and $00FF) shl 8) or ((pt.x and $FF00) shr 8);
 pt.y := ((pt.y and $00FF) shl 8) or ((pt.y and $FF00) shr 8);

 Result.X := pt.y;
 Result.Y := pt.x;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 pt: TPoint;
begin
 pt := GetBMPDimensions('c:\test.bmp');
 ShowMessage('BMP: ' + IntToStr(pt.X) + ', ' + IntToStr(pt.Y));

 pt := GetGIFDimensions('c:\test.gif');
 ShowMessage('GIF: ' + IntToStr(pt.X) + ', ' + IntToStr(pt.Y));

 pt := GetJPEGDimensions('c:\test.jpg');
 ShowMessage('JPEG: ' + IntToStr(pt.X) + ', ' + IntToStr(pt.Y));
end;


не лучшая реализация с точки зрения понятности, надо бы все константы обозвать, структуры оформить и т.д. , но работает smile.gif


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
man2002ua
Дата 9.4.2003, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 943
Регистрация: 12.11.2002
Где: Киев

Репутация: нет
Всего: 2



Ну да, это если не лень вспоминать форматы файлов wink.gif


--------------------
"Нет ничего более постоянного, чем временное"
PM MAIL   Вверх
stab
Дата 10.4.2003, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



man2002ua надо описалово всегда хранить под рукой, как можно большего кол-ва форматов всего на свете, тогда и вспоминать не надо smile.gif


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0543 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.