Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

формат BMP

3.3K
06 октября 2003 года
londinium
19 / / 06.10.2003
Господа!
Помогите, пожалуйста, решить такую проблему - надо из BMPфайла получить информацию о длине и высоте изображения и матрицу яркости пикселей.Заранее спасибо.
[email]londinium@rambler.ru[/email]
415
06 октября 2003 года
SLA
274 / / 08.08.2003
Цитата:
Originally posted by londinium
надо из BMPфайла получить информацию о длине и высоте изображения и матрицу яркости пикселей



Я как-то копался в BMP-файлах. Только это были 24-битные BMP. Там все просто. Имеется шапка файла (всего 54 байта, кажется), в ней хранятся ширина и высота картинки (их смещение в шапке можно найти экспериментально, за 2 попытки). А тело BMP записано как массив значений RGB. Только, кажется, задом-наперед. Массив (кажется) начинался с правой нижней точки изображения.

Все гораздо сложнее, если это, например, 8-bit BMP с палитрой. А если к тому же и compressed...

Здесь найдешь ссылку на описание формата BMP:
http://sources.codenet.ru/index.php?path=formtfil/0-9_a-c

487
07 октября 2003 года
ddnh_bc
301 / / 16.09.2003
Цитата:
Originally posted by SLA

Господа!
Помогите, пожалуйста, решить такую проблему - надо из BMPфайла получить информацию о длине и высоте изображения и матрицу яркости пикселей.Заранее спасибо.



Мммм... Поподробнее можно? Что есть матрица яркости пикселей? Может быть ты растр имеешь ввиду?

А касаемо BMP...
Есть в билдере такой класс Graphics::TBitmap - он как раз и предназначен для работы с BMP изображениями - поддерживает все форматы BMP - 1,4,8,16,24 и 32 бита.

Для 16 бит понимает форматы 555 и 565.

Умеет работать со сжатыми изображениями.
Умеет сохранять и загружать файлы.
Дает доступ ко всем параметрам изображения, включая сам растр.

Вот пример:

#include <graphics.hpp>

Graphics::TBitmap *_bmp;

void __fastcall TForm1::bmp_test(void)
{
_bmp=new Graphics::TBitmap();
_bmp->LoadFromFile("test.bmp");
_bmp->Width // ширина изображения
_bmp->Height // высота изображения
_bmp->PixelFormat // глубина цвета
_bmp->Palette
// палитра изображения только для 4 и 8 битных
// изображений.

_bmp->ScanLine[index]
// массив скан-лайнов растра изображения.
// хотя битмапы действительно перевернуты,
// ScanLine работает в нормальной координатной
// системе - тобишь сверху вниз.
// Поэтому ScanLine[0] вернет void указатель
// на скан-линию с y координатой 0. И.т.д.

Canvas->Draw(0,0,_bmp);
// А вот так можно вывести битмапку на экран - в
// данном случае она будет выведена в канву
// TForm1 в координаты 0,0.
delete _bmp;
}

Вобщем весьма полезный класс и пользоваться им весьма удобно. К тому же, дает тебе возможность работы с растром изображения как с обычной канвой - класс TCanvas - тобишь можешь рисовать в битмапку обычными функциями графического вывода класса TCanvas.

Подробнее смотри хелп по TBitmap.

3.3K
07 октября 2003 года
londinium
19 / / 06.10.2003
Огромное спасибо, именно то яи имел в виду, просто во многих публикациях по обработке изображений растр называют матрицей яркости.

Всем огромное спасибо
[email]londinium@rambler.ru[/email]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог