| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Размер файла |
| Автор: Nightwish 9.3.2004, 14:42 |
| Здравствуйте. Возможно ли узнать размер изображения который находится в image? |
| Автор: Nightwish 9.3.2004, 14:49 |
| Забыл уточнить. Размер файла находящийся в image. |
| Автор: serious 9.3.2004, 15:20 |
| What? |
| Автор: Unregistered 9.3.2004, 15:39 |
| Nightwish Бери высоту, ширену и глубину цвета и все это перемножай |
| Автор: Cashey 9.3.2004, 15:43 |
| Запоминаешь файл при присвоение, и при помощи FileSize(f) определяешь его размер |
| Автор: Alex 9.3.2004, 16:04 | ||
|
| Автор: Kesh 10.3.2004, 00:47 |
| alex-co по-моему Nightwish спрашивает размер файла уже загруженного в TImage... Др. Nightwish размер файла определить трудно, т.к. в TImage он хранится в TBitmap, но на жесткий диск может сохраняться в различных форматах, каждый из которых имеет свою кодировку изображения, и соотв. занимает разное место... Даже TBitmap, сохраненный в LengthEncoding занимает меньше места, чем чистый Bitmap... Будь добр, уточни для каких целей тебе необходимо определить размер файла, тогда проще будет тебе помочь... |
| Автор: Nightwish 10.3.2004, 01:47 |
| Да действительно мне нужен размер файла уже загруженного в Image. Функция FileSize тут не подходит, т.к. файл мне сохранять не нужно, а нужно узнать сколько весит картинка загруженная в Image из буфера. |
| Автор: Nightwish 10.3.2004, 01:50 |
| Т.е. файла как такого ещё нет, но нужно узнать если его сохранить сколько будет весить. |
| Автор: Alex 10.3.2004, 07:24 |
| kesh поясни, что такое LengthEncoding. На сколько отличается реальный размер bmp от того, который возвращает LengthEncoding? |
| Автор: Kesh 10.3.2004, 13:49 |
| alex-co Ну смотри. Обычный bmp кодируется как есть bit map, т.е. сохраняются цвета для каждого пиксела, соотв. размер файла есть height*width*1(3)byte_per_pixel+HeaderSize, где (1 - GrayScale (серый), 3 - RGB). Пиксельное поле кодируется по строкам, начиная с нижней. Т.е. картинка загружается снизу-вверх, слева-направо... (ИМХО классная задумка для порносайтов - загружать картинки снизу LengthEncoding действует по-другому... Он записывает битовое поле так: Сейчас 1 пиксель цвета FFFFFF, затем три пиксела цвета FFCCFF, потом еще 2 пиксела цвета FFFFFF и т.д. т.е. идет примерно так 01FFFFFF03FFCCFF02FFFFFF и т.д. На немногоцветных рисунках это дает неплохие результаты. Кстати, если не ошибаюсь, примерно также действует gif... P.S. Перечитал и сам себя не понял... Если ты тоже не понял - пиши, попытаюсь объяснить доходчивее... |
| Автор: p0s0l 11.3.2004, 22:31 | ||
Не, гифы по-другому, там LZW (или как там называлось, уже толком не помню), посложнее на порядок метод... Но это уже оффтопик...
1) А при загрузке из буффера нельзя запомнить размер в переменной или в Image1.Tag ? 2) Если же писать на диск нельзя - пиши в память (в TMemoryStream), метод у Bitmap'а SaveToStream... |