Страница 1 из 2

Работа с Bmp

Добавлено: 10 апр 2007, 17:00
oif
Как отбросить заголовок Bmp файла?
И дальше продолжать считывание из файла (по пиксельно),файл монохромный.

Re: Работа с Bmp

Добавлено: 10 апр 2007, 17:43
Хыиуду
Создать монохромный файл, залить его определенным цветом, открыть в hex-редакторе и посмотреть, где заканчиваются байты этого цвета

Re: Работа с Bmp

Добавлено: 10 апр 2007, 18:44
oif
Хыиуду писал(а):Создать монохромный файл, залить его определенным цветом, открыть в hex-редакторе и посмотреть, где заканчиваются байты этого цвета
Меня интересует как по байтно считать,и сколько байт выделяется на 1 пиксель в монохромном рисунке.
Т.е задача состоит в следущем есть BMP,считываем из него значения пикселей по строчно и раскладываем данный ряд с помощью преобразований фурье.
Т.е мне надо получить
1 пиксель=245
2 пиксель=1
3 пиксель=65
и.т.д

Re: Работа с Bmp

Добавлено: 11 апр 2007, 05:19
SergeyS
используй у битмапа свойство .ScanLine, которое возвращает указатель его "пикселы".
Работа в данном случае осуществляется напрямую с памятью, без всяких GDI (GDI используется для получения данного указателя)

Re: Работа с Bmp

Добавлено: 11 апр 2007, 09:38
oif
Можно пример кода маленький?

Re: Работа с Bmp

Добавлено: 11 апр 2007, 09:58
Duncon
Я бы шабку обошел просто (у bmp 2 заголовка)

Код: Выделить всё

var
  fh: TBitmapfileheader;
  ih: TBitmapinfoheader;
  s: TFileStream;
begin
  s := TFileStream.Create(Form1.OPicDial.FileName, fmOpenRead);
  try
    s.Read(fileh, SizeOf(fileh));
    s.Read(infoh, SizeOf(infoh));
    {Все с этого места идет непосредственно изображение}
  finally
    s.Free;
  end;
end;

Re: Работа с Bmp

Добавлено: 11 апр 2007, 10:45
Absurd
Duncon писал(а):Я бы шабку обошел просто (у bmp 2 заголовка)

Код: Выделить всё

var
  fh: TBitmapfileheader;
  ih: TBitmapinfoheader;
  s: TFileStream;
begin
  s := TFileStream.Create(Form1.OPicDial.FileName, fmOpenRead);
  try
    s.Read(fileh, SizeOf(fileh));
    s.Read(infoh, SizeOf(infoh));
    {Все с этого места идет непосредственно изображение}
  finally
    s.Free;
  end;
end;
Про палитру забыл

Re: Работа с Bmp

Добавлено: 11 апр 2007, 10:49
Absurd
oif писал(а):Меня интересует как по байтно считать,и сколько байт выделяется на 1 пиксель в монохромном рисунке.
1 байт на два пискеля, если градаций 16 и 1 байт на пиксель, если их 256.
oif писал(а): Т.е задача состоит в следущем есть BMP,считываем из него значения пикселей по строчно и раскладываем данный ряд с помощью преобразований фурье.
BMP прочитать не можешь, а в ряд Фурье разложить можешь?

Re: Работа с Bmp

Добавлено: 11 апр 2007, 10:53
oif
Еще вопрос.
Если рисунок монохромный то как я понимаю,оттенки могут быть от 0 до 255.
У меня получаются через canvas.pixels тысячи.
Как мне получить данные значения?
Или я ошибаюсь?

Re: Работа с Bmp

Добавлено: 11 апр 2007, 10:58
oif
Absurd писал(а): BMP прочитать не можешь, а в ряд Фурье разложить можешь?
Да и такое бывает:-)
Поэтому и прошу помощи с конкретными примерами.