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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Размер файла, Размер файла 
:(
    Опции темы
Nightwish
Дата 9.3.2004, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте.

Возможно ли узнать размер изображения который находится в image?
PM MAIL   Вверх
Nightwish
Дата 9.3.2004, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Забыл уточнить.

Размер файла находящийся в image.
PM MAIL   Вверх
serious
Дата 9.3.2004, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



What?


--------------------
Я знаю то, что ничего не знаю, а некоторые не знают и этого.
PM MAIL   Вверх
Unregistered
Дата 9.3.2004, 15:39 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Nightwish
Бери высоту, ширену и глубину цвета и все это перемножай
  Вверх
Cashey
Дата 9.3.2004, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

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



Запоминаешь файл при присвоение, и при помощи FileSize(f) определяешь его размер



--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Alex
Дата 9.3.2004, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Код
function GetFileSizeByte(FileName :String) :Int64;
// Размер файла в байтах
{$IFDEF MSWINDOWS}
var
 Handle: tHandle;
 FindData: tWin32FindData;
begin
 Handle := FindFirstFile(PChar(FileName), FindData);
 if Handle = INVALID_HANDLE_VALUE then
   RaiseLastOSError;

 Windows.FindClose(Handle);
 if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) <> 0 then
   Result := 0  // Размер каталога всегда считаем равным 0
 else begin
   Int64Rec(Result).Hi := FindData.nFileSizeHigh;
   Int64Rec(Result).Lo := FindData.nFileSizeLow;
 end;
end;
{$ENDIF}
{$IFDEF LINUX}
var
 st: TStatBuf;
begin
 if stat(PChar(FileName), st) = 0 then
   Result := st.st_size
 else
   Result := -1;
end;
{$ENDIF}





--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Kesh
Дата 10.3.2004, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

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



alex-co по-моему Nightwish спрашивает размер файла уже загруженного в TImage...

Др. Nightwish размер файла определить трудно, т.к. в TImage он хранится в TBitmap, но на жесткий диск может сохраняться в различных форматах, каждый из которых имеет свою кодировку изображения, и соотв. занимает разное место... Даже TBitmap, сохраненный в LengthEncoding занимает меньше места, чем чистый Bitmap...

Будь добр, уточни для каких целей тебе необходимо определить размер файла, тогда проще будет тебе помочь...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Nightwish
Дата 10.3.2004, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да действительно мне нужен размер файла уже загруженного в Image.
Функция FileSize тут не подходит, т.к. файл мне сохранять не нужно, а нужно узнать сколько весит картинка загруженная в Image из буфера.
PM MAIL   Вверх
Nightwish
Дата 10.3.2004, 01:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Т.е. файла как такого ещё нет, но нужно узнать если его сохранить сколько будет весить.
PM MAIL   Вверх
Alex
Дата 10.3.2004, 07:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



kesh поясни, что такое LengthEncoding. На сколько отличается реальный размер bmp от того, который возвращает LengthEncoding?


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Kesh
Дата 10.3.2004, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

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



alex-co Ну смотри. Обычный bmp кодируется как есть bit map, т.е. сохраняются цвета для каждого пиксела, соотв. размер файла есть height*width*1(3)byte_per_pixel+HeaderSize, где (1 - GrayScale (серый), 3 - RGB). Пиксельное поле кодируется по строкам, начиная с нижней. Т.е. картинка загружается снизу-вверх, слева-направо... (ИМХО классная задумка для порносайтов - загружать картинки снизу wow.gif wow.gif wow.gif)
LengthEncoding действует по-другому... Он записывает битовое поле так: Сейчас 1 пиксель цвета FFFFFF, затем три пиксела цвета FFCCFF, потом еще 2 пиксела цвета FFFFFF и т.д. т.е. идет примерно так 01FFFFFF03FFCCFF02FFFFFF и т.д. На немногоцветных рисунках это дает неплохие результаты. Кстати, если не ошибаюсь, примерно также действует gif...

P.S. Перечитал и сам себя не понял... Если ты тоже не понял - пиши, попытаюсь объяснить доходчивее...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
p0s0l
Дата 11.3.2004, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



Не, гифы по-другому, там LZW (или как там называлось, уже толком не помню), посложнее на порядок метод... Но это уже оффтопик...

Цитата
Функция FileSize тут не подходит, т.к. файл мне сохранять не нужно, а нужно узнать сколько весит картинка загруженная в Image из буфера.

1) А при загрузке из буффера нельзя запомнить размер в переменной или в Image1.Tag ?
2) Если же писать на диск нельзя - пиши в память (в TMemoryStream), метод у Bitmap'а SaveToStream...



--------------------
С уважением, г-н Посол.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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