Работа с Bmp
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Как отбросить заголовок Bmp файла?
И дальше продолжать считывание из файла (по пиксельно),файл монохромный.
И дальше продолжать считывание из файла (по пиксельно),файл монохромный.
Создать монохромный файл, залить его определенным цветом, открыть в hex-редакторе и посмотреть, где заканчиваются байты этого цвета
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Меня интересует как по байтно считать,и сколько байт выделяется на 1 пиксель в монохромном рисунке.Хыиуду писал(а):Создать монохромный файл, залить его определенным цветом, открыть в hex-редакторе и посмотреть, где заканчиваются байты этого цвета
Т.е задача состоит в следущем есть BMP,считываем из него значения пикселей по строчно и раскладываем данный ряд с помощью преобразований фурье.
Т.е мне надо получить
1 пиксель=245
2 пиксель=1
3 пиксель=65
и.т.д
- SergeyS
- Сообщения: 196
- Зарегистрирован: 21 ноя 2006, 17:12
- Откуда: Хакасия, Абакан
- Контактная информация:
используй у битмапа свойство .ScanLine, которое возвращает указатель его "пикселы".
Работа в данном случае осуществляется напрямую с памятью, без всяких GDI (GDI используется для получения данного указателя)
Работа в данном случае осуществляется напрямую с памятью, без всяких GDI (GDI используется для получения данного указателя)
Можно пример кода маленький?
Я бы шабку обошел просто (у 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;
-
- Сообщения: 1228
- Зарегистрирован: 26 фев 2004, 13:24
- Откуда: Pietari, Venäjä
- Контактная информация:
Про палитру забыл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;
2B OR NOT(2B) = FF
-
- Сообщения: 1228
- Зарегистрирован: 26 фев 2004, 13:24
- Откуда: Pietari, Venäjä
- Контактная информация:
1 байт на два пискеля, если градаций 16 и 1 байт на пиксель, если их 256.oif писал(а):Меня интересует как по байтно считать,и сколько байт выделяется на 1 пиксель в монохромном рисунке.
BMP прочитать не можешь, а в ряд Фурье разложить можешь?oif писал(а): Т.е задача состоит в следущем есть BMP,считываем из него значения пикселей по строчно и раскладываем данный ряд с помощью преобразований фурье.
2B OR NOT(2B) = FF
Еще вопрос.
Если рисунок монохромный то как я понимаю,оттенки могут быть от 0 до 255.
У меня получаются через canvas.pixels тысячи.
Как мне получить данные значения?
Или я ошибаюсь?
Если рисунок монохромный то как я понимаю,оттенки могут быть от 0 до 255.
У меня получаются через canvas.pixels тысячи.
Как мне получить данные значения?
Или я ошибаюсь?
Да и такое бывает:-)Absurd писал(а): BMP прочитать не можешь, а в ряд Фурье разложить можешь?
Поэтому и прошу помощи с конкретными примерами.