0 / 0 / 3
Регистрация: 06.01.2011
Сообщений: 183
|
|
Конвертация BMP 8bit файла в отдельные цветовые файлы22.08.2011, 16:22. Показов 2417. Ответов 4
Метки нет Все метки)
(
Добрый день!
Нужна программа со следующими возможностями: - открыть файл BMP 8bit 1600х1200 пик - определить число используемых цветов в палитре - сделать из открытого файла, графические файлы BMP 8bit в которых присутствует только один цвет из палитры, все остальные заменены на черный. в общем из одного многоцветного файла сделать много одноцветных, по числу цветов в палитре исходного файла - записать полученные файлы на ЖД, в том же каталоге, для последующего просмотра Вопрос: кто нибудь встречал похожие программы написанные на Дельфи? интересно взглянуть на код Заранее спасибо
0
|
22.08.2011, 16:22 | |
Ответы с готовыми решениями:
4
Как получить цвет пикселя из палитры BMP 8bit Конвертация bmp изображения в матрицу Конвертация BMP в массив и обратно |
![]() 13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
|
|
22.08.2011, 17:36 | |
Через WinAPI можно получить всё тело bitmap'а. Учитывая, что он 8bit, каждый байт в теле будет соответствовать одному пикселу. Палитру тоже можно получить без проблем. Но пальтра у него в любом случае будет состоять из 256 цветов. Какие из них используются, а какие нет - это только анализом всех пикселов можно выяснить.
0
|
0 / 0 / 3
Регистрация: 06.01.2011
Сообщений: 183
|
|
23.08.2011, 08:44 [ТС] | |
Вижу, конкретно с кодом будет проблемно - видимо достаточно сложный
тогда обсудим логику работы программы вариант1 1. открыть файл БМП в каталоге 2. прочитать первый байт массива пикселей (он же последний в файле) 3. перевести в строковую форму значение индекса, записанное в байте 4. открыть новый БМП-файл, записать в него базовый файл, присвоить ему имя взятое из индекса байта пикселя (ну чтобы в имени файла было указание на палитру, не потерялось) 5. сравнить поочередно все пиксели в массиве нового файла со значением первого байта пикселя если значения равны, тогда сравниваем следующий байт пикселя если значения не равны, тогда присваиваем байту значение "черный цвет" и идем дальше сравнивать 6. сохраняем на ЖД в том же каталоге с именем к примеру 236.bmp (где 236 - строковое значение индекса байта пикселя) 7. читаем 2-й байт первого файла, зацикливаем это действие, пока не закончатся цвета в палитре итого имеем на ЖД: начальный файл файлы с именем индекса палитры 2-х цветовые, цвет фона черный, и цвет палитры Получается много много вычислений, вопросы: - можно приблизительно оценить время выполнения операции при условии что цветов в палитре скажем 150? массив размером 1280х1024 пикс, ну РС = INTEL I5 или 7? что там последнее - может еще какая логика обработки есть?
0
|
0 / 0 / 3
Регистрация: 06.01.2011
Сообщений: 183
|
||||||
24.08.2011, 08:31 [ТС] | ||||||
вот есть такой рабочий код
0
|
24.08.2011, 08:31 | |
Помогаю со студенческими работами здесь
5
Конвертация картинки из 24bit в 8bit Конвертация *.BMP в 3 файла *.ТХТ Конвертация bmp-файла в jpg Работа с файлами. Из имеющего файла по сортировать в отдельные файлы Конвертация из bmp в png Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Async/await в Swift: Асинхронное программирование в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
|
Сложность Колмогорова: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
|
PostgreSQL в Kubernetes: Подготовка кластера и настройка
Mr. Docker 20.03.2025
Когда доходит до контейнеризации баз данных и особенно таких требовательных к ресурсам системах как PostgreSQL, многие команды до сих пор колеблются, прежде чем перенести их в контейнерную. . .
|
C++26: Индексирование пакетов и метапрограммирование
bytestream 20.03.2025
Эволюция C++ продолжается стремительными темпами – каждый новый стандарт приносит функциональность, о которой мы мечтали годами. Звучит слишком громко? Если вы когда-либо боролись с вариадическими. . .
|
Состояние гонки в C#: подводные камни многопоточного программирования
UnmanagedCoder 20.03.2025
Что такое состояние гонки? Это ситуация, когда результат программы непредсказуемо меняется в зависимости от порядка выполнения потоков. Проще говоря, два или более потока пытаются одновременно. . .
|
Next.js для разработки React: преимущества серверного рендеринга
Reangularity 20.03.2025
Next. js решает классическую проблему React-приложений: медленную первоначальную загрузку и плохую индексацию поисковиками. Вместо того чтобы заставлять браузер пользователя выполнять всю работу по. . .
|
JUnit или TestNG: Выбираем Java-фреймворк для тестирования
Javaican 20.03.2025
История тестовых фреймворков в Java началась в конце 90-х, когда Кент Бек и Эрих Гамма разработали JUnit - инструмент, который перевернул представление разработчиков о модульном тестировании. JUnit. . .
|
Разбиваем монолит на два микросервиса и реализуем CI/CD
ArchitectMsa 20.03.2025
Когда команда растет, а функциональность монолита расширяется, поддерживать и развивать такую систему становится все труднее. Разработчики начинают тратить много времени на разбор сложных. . .
|
Python и PDF: Создание и редактирование файлов
py-thonny 20.03.2025
Работа с PDF-документами – одна из популярных задач в современной разработке. Python предлагает несколько инструментов для создания, чтения и редактирования PDF-файлов, среди которых особенно. . .
|
Корутины в Unity и производительность WaitForSeconds
GameUnited 20.03.2025
Разработчики игр на Unity часто сталкиваются с вопросом: как выполнять действия через определённые промежутки времени, не блокируя основной поток игры? Тут как раз и приходят на помощь корутины —. . .
|