Работа с Bmp

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Работа с Bmp

Re: Работа с Bmp

Duncon » 11 апр 2007, 17:20

oif писал(а):Всем спасибо разобрался.
Покажи решение интересно что получилось..

Re: Работа с Bmp

somewhere » 11 апр 2007, 12:39

&quot писал(а):У меня получаются через canvas.pixels тысячи.
Canvas.Pixels - дает Pointer на память, в ней каждый байт - градация серого.

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

Var P:PByteArray;
-=Bla=--=Bla=--=Bla=
P := YourBitmap.Canvas.Pixels[row];
GrayPixel1 := P[0];
GrayPixel2 := P[1];
-=Bla=--=Bla=--=Bla=-

Re: Работа с Bmp

oif » 11 апр 2007, 11:09

Всем спасибо разобрался.

Re: Работа с Bmp

oif » 11 апр 2007, 10:58

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

Re: Работа с Bmp

oif » 11 апр 2007, 10:53

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

Re: Работа с Bmp

Absurd » 11 апр 2007, 10:49

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

Re: Работа с Bmp

Absurd » 11 апр 2007, 10:45

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

Duncon » 11 апр 2007, 09:58

Я бы шабку обошел просто (у 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

oif » 11 апр 2007, 09:38

Можно пример кода маленький?

Re: Работа с Bmp

SergeyS » 11 апр 2007, 05:19

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

Вернуться к началу