Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
51 / 49 / 2
Регистрация: 23.01.2019
Сообщений: 381

Работа с *.bmp изображением

19.03.2025, 12:49. Показов 7388. Ответов 72
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сразу говорю, что знания паскаля хуже чем "пишу и читаю со словарём".

Задача считывать пиксели с *.bmp изображений. Максимальный размер изображения 320х240px. Но чувствую, что до этого мне ещё далеко. Поэтому попорядку..

Я нашёл в сети как вывести в поле Memo содержимое текстового файла. Проверил, работает:

Pascal
1
2
3
4
5
6
7
8
9
procedure TForm1.Button1Click(Sender: TObject);
 
begin
   if OpenDialog1.Execute then
  begin
        FName:= OpenDialog1.FileName;
        Memo1.Lines.LoadFromFile(FName);
  end;
end;
Предполагаю, что вывод изображения не сильно будет отличаться.

Поэтому вопросы:
1. Какой элемент создать на форме для загрузки *.bmp для дальнейшего считывания пикселей? (предполагаю, что Image)
2. На что изменить в диалоге строчку "Memo1.Lines.LoadFromFile(FName);" для Image?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.03.2025, 12:49
Ответы с готовыми решениями:

Работа с изображением
Товарищи подскажите как ускорить процесс обновления канвы при просмотре большого объема данных? есть возможность обрабатывать только...

Работа с изображением
Помогите пожалуйста очень нужна помощь, во ту меня есть картинка, нужна теперь кнопка при нажатии на которую картинка отображается сверху...

Работа с изображением
Два вопроса: 1. Ребят есть картинка, надо извлекать из рисунка нужный сектор и показывать его на форме. 2. Можно не меняя формата (png)...

72
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
19.03.2025, 17:03
Студворк — интернет-сервис помощи студентам
shonty, bmp 4 и 8 битный умеет в RLE.

Добавлено через 4 минуты
Цитата Сообщение от shonty Посмотреть сообщение
Осталось получить
Получить черно-белый BMP? Много программ же есть, в чём проблема.
При желании, можно и самому написать преобразование цветного в чб, как я, например. Только нужно ли в данном случае?
1
51 / 49 / 2
Регистрация: 23.01.2019
Сообщений: 381
19.03.2025, 17:12  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
shonty, bmp 4 и 8 битный умеет в RLE
RLE открывал хексом, то же преобразовывать нужно, как и БМП.
И у RLE вроде вывод с левого нижнего угла, строками и вверх..
А мне нужно с левого верхнего, столбцами вправо. Таковы настройки вывода изображения.

Да вроде уже получается и в паскале. Чуть позже по математике наверное небольшой вопрос возникнет.

У меня же просто последовательности байтовые. Вот к примеру цифры от 0 до 9 16x10px:

Никаких заголовков, всё в подпрограммах обрабатывается..
0
Злостный нарушитель
 Аватар для Verevkin
10889 / 5825 / 1288
Регистрация: 12.03.2015
Сообщений: 26,888
19.03.2025, 17:14
Цитата Сообщение от shonty Посмотреть сообщение
И у RLE вроде вывод с левого нижнего угла, строками и вверх..
у bmp - тоже.
Цитата Сообщение от shonty Посмотреть сообщение
Никаких заголовков, всё в подпрограммах обрабатывается..
да мы поняли уже, успокойся.
1
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
19.03.2025, 18:03
Цитата Сообщение от shonty Посмотреть сообщение
RLE открывал хексом, то же преобразовывать нужно, как и БМП.
RLE это метод сжатия байтов, а сам по себе файл BMP.
И обычно да, в файле первой идёт самая нижняя строка. Но есть вариант (предусмотрено форматом), чтобы первым в файле шла верхняя строка изображения.

Цитата Сообщение от shonty Посмотреть сообщение
А мне нужно с левого верхнего, столбцами вправо.
Тут либо считанное размещать снизу, либо читать с конца. Только, при RLE сжатии остаётся только читать данные с начала и строки заполнять снизу.

Добавлено через 3 минуты
Цитата Сообщение от shonty Посмотреть сообщение
RLE открывал хексом, то же преобразовывать нужно, как и БМП.
RLE нужно декодировать, потом уже преобразования, если нужно.
1
51 / 49 / 2
Регистрация: 23.01.2019
Сообщений: 381
20.03.2025, 17:26  [ТС]
Да и вообще RLE преобразовывать, оно же 32-х битное, а мне нужно для 8-ми битных контроллеров..
Проще оказалось свой формат замутить..

Ребят, всем благодарочка за помощь. Всё получилось. Слегка интерфейс только программе подправлю.. может быть , а может нет ))




0
Злостный нарушитель
 Аватар для Verevkin
10889 / 5825 / 1288
Регистрация: 12.03.2015
Сообщений: 26,888
20.03.2025, 17:52
Цитата Сообщение от shonty Посмотреть сообщение
Ребят, всем благодарочка за помощь. Всё получилось. Слегка интерфейс только программе подправлю.. может быть
Мы рады за тебя, ты молодец!

0
51 / 49 / 2
Регистрация: 23.01.2019
Сообщений: 381
20.03.2025, 18:02  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
Мы рады за тебя
Verevkin, тебе персональное сенькью, ты единственный, кто верил в меня и ни разу не усомнился
0
Злостный нарушитель
 Аватар для Verevkin
10889 / 5825 / 1288
Регистрация: 12.03.2015
Сообщений: 26,888
20.03.2025, 18:05
Цитата Сообщение от shonty Посмотреть сообщение
тебе персональное сенькью, ты единственный, кто верил в меня и ни разу не усомнился
Ну дык ёптыть, я ж оптимист!!! Мне не всё равно.

1
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
20.03.2025, 19:55
Цитата Сообщение от shonty Посмотреть сообщение
Да и вообще RLE преобразовывать, оно же 32-х битное, а мне нужно для 8-ми битных контроллеров..
Не понял, в чём связь? И откуда взялся 32 битный RLE в BMP? Или это уже не в BMP?
0
51 / 49 / 2
Регистрация: 23.01.2019
Сообщений: 381
20.03.2025, 20:31  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
И откуда взялся 32 битный RLE в BMP?
аа.. ну когда хекс-редактором открывал, сначала из него хотел данные брать и преобразовывать. да.. попутал, это из-за файловой системы
0
Злостный нарушитель
 Аватар для Verevkin
10889 / 5825 / 1288
Регистрация: 12.03.2015
Сообщений: 26,888
20.03.2025, 21:09
Цитата Сообщение от shonty Посмотреть сообщение
это из-за файловой системы
0
51 / 49 / 2
Регистрация: 23.01.2019
Сообщений: 381
21.03.2025, 15:45  [ТС]
Ребят, подскажите ещё по такому вопросу:
Конвертация иногда проходит быстро, иногда занимает некоторое время, на глаз видно.
Я сделал "строку сосояния" куда выводятся ошибки и т.п..
И вот когда конвертацию запускаю, то сообщение выводится только по окончании процесса. Как будто нет обновления формы.
Можно это как то обойти?
Pascal
1
2
3
4
5
6
procedure TForm1.Button3Click(Sender: TObject);
begin
Label13.Font.Color:=clRed;
Label13.Caption:='КОНВЕРТАЦИЯ';   // информация
...
...
0
Злостный нарушитель
 Аватар для Verevkin
10889 / 5825 / 1288
Регистрация: 12.03.2015
Сообщений: 26,888
21.03.2025, 15:56
Цитата Сообщение от shonty Посмотреть сообщение
Можно это как то обойти?
Обойти-то можно, но лучше сделать конвертацию мгновенной.
0
51 / 49 / 2
Регистрация: 23.01.2019
Сообщений: 381
21.03.2025, 16:16  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
но лучше сделать конвертацию мгновенной.
Для личного и не частого использования скорость приемлемая. 320х240 примерно секунду с небольшим. Дольше в редакторе рисовать и во флеш контроллера заливать.
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
21.03.2025, 16:40
Цитата Сообщение от shonty Посмотреть сообщение
Конвертация иногда проходит быстро, иногда занимает некоторое время, на глаз видно.
Возможно, можно ускорить. Для более точного ответа нужно видеть код (а лучше проект), а он не предоставлен.

Цитата Сообщение от shonty Посмотреть сообщение
320х240 примерно секунду с небольшим.
Долго что-то.

Добавлено через 55 секунд
Цитата Сообщение от shonty Посмотреть сообщение
Можно это как то обойти?
Можно. Но от этого время выполнения может увеличиться.
0
51 / 49 / 2
Регистрация: 23.01.2019
Сообщений: 381
21.03.2025, 16:44  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
Но от этого время выполнения может увеличиться.
Да без разницы на время..
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
21.03.2025, 16:52
Можно после обработки строки/присвоения Label.Caption := выполнять
Delphi
1
  Application.ProcessMessages;
тогда, Label будут обновляться во время преобразования.
Но нужно предусмотреть защиту от повторного исполнения кода. Например, как поле добавить флаг, если он установлен, то выход из этого обработчика.
1
51 / 49 / 2
Регистрация: 23.01.2019
Сообщений: 381
21.03.2025, 17:05  [ТС]
Нагуглил такое "Form1.Update;":
Pascal
1
2
3
4
5
6
7
8
9
procedure TForm1.Button3Click(Sender: TObject);
begin
Label13.Font.Color:=clRed;
Label13.Caption:='КОНВЕРТАЦИЯ';   // информация
Form1.Update;
...
...
...
   Label13.Caption:='';   // информ. строка
Работает.

Цитата Сообщение от AzAtom Посмотреть сообщение
Можно после обработки строки/присвоения Label.Caption := выполнять
DelphiСкопировано
1
  Application.ProcessMessages;
Ваш метод также рабочий.
Спасибо.

Добавлено через 6 минут
Методом научного тыка

Pascal
1
Label13.Update;
0
51 / 49 / 2
Регистрация: 23.01.2019
Сообщений: 381
23.03.2025, 15:12  [ТС]
Пока паскаль не закрыл.. решил для 4-х и 8-ми цвЕтных изображений написать.
А то потом не заставлю себя его открыть

Но только формат байта поменял. Сначала индекс цвета идёт, потом кол-во пикселей. Так удобнее обработку писать.
1
Злостный нарушитель
 Аватар для Verevkin
10889 / 5825 / 1288
Регистрация: 12.03.2015
Сообщений: 26,888
23.03.2025, 15:18
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.03.2025, 15:18

Работа с изображением
Нужно програмно в компонет Image вставлять картинку форматов JPG. Если кто-то может обьясните как ето сделать!?

Работа с изображением
Проблема, такого рода, имеется карта объекта, нужно раставить на этой карте активные точки так, что бы при неажатии на них мышкой, открылся...

Работа с изображением
Здравствуйте, дали курсовую, и я понял что нужно много работать с изображениями, не можете подсказать мануалы/статьи/учебники по этой теме.

Работа с прозрачным изображением
Здравствуйте. Подскажите, пожалуйста, можно ли так настроить процедуру OnClick для изображения с прозрачной частью, чтобы программа...

работа с изображением - открыть сохранить
нужно 1) предоставить возможность выбора изображения гдет на венчестере (рабочие расширения приблизительно распрастроненныЕ) 2)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru