Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
DarkAnima
1

Изменение палитры bmp изображения

30.11.2011, 23:11. Показов 3863. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребят, помогите пожалуйста. У меня стоит задача изменить палитру в bmp изображении чтоб первые 118 цветов были белыми, а другие 118 черными. Другими словами палитра должна иметь вид:
R G B
1 0 0 0
2 0 0 0
3 0 0 0
..
118 0 0 0
119 255 255 255
120 255 255 255
121 255 255 255
....
218 255 255 255

реализовать надо на с++. Я нашла похожий код на делфи, но к сожалению в делфи я не шарю:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
var
  Palette : HPalette;
  PaletteSize : Integer;
  LogSize: Integer;
  LogPalette: PLogPalette;
begin
  Palette := Image1.Picture.Bitmap.ReleasePalette;
  if Palette=0 then exit;
  if GetObject(Palette, SizeOf(PaletteSize), @PaletteSize) = 0 then Exit;
  if PaletteSize = 0 then Exit;
  LogSize := SizeOf(TLogPalette) + (PaletteSize - 1) * SizeOf(TPaletteEntry);
  GetMem(LogPalette, 16);
  try
    with LogPalette^ do begin
      palVersion := $0300;
      palNumEntries := $0200;
      GetPaletteEntries(Palette, 0, 2, palPalEntry);
      palPalEntry[0].peRed := 0;
      palPalEntry[0].peGreen := 0;
      palPalEntry[0].peBlue := 255;
    end;
    Image1.Picture.Bitmap.Palette := CreatePalette(LogPalette^);
  finally
    FreeMem(LogPalette, LogSize);
    DeleteObject(Palette);
  end;
end;
 
Этот код изменяет черный цыет в изображении на синий. 
мои попытки перевести на с++ привели меня вот к этому коду:
 
 HPALETTE  Palette;
 int PaletteSize;
 int LogSize;
 LOGPALETTE LogPalette;
 
 Palette = Image1->Picture->Bitmap->ReleasePalette();
 LogSize = sizeof(TLogPalette) + (PaletteSize - 1) * sizeof(TPaletteEntry);
 LogPalette.palVersion=0x300;
 LogPalette.palNumEntries=0x200;
 GetPaletteEntries(Palette, 0, PaletteSize, LogPalette.palPalEntry);
 
 LogPalette.palPalEntry[0].peRed=0;
 LogPalette.palPalEntry[0].peGreen=0;
 LogPalette.palPalEntry[0].peBlue=255;
 
 Image1->Picture->Bitmap->Palette = CreatePalette(LogPalette);
 
Но в нем существуют проблемы с  LOGPALETTE LogPalette т к я не знаю как перевесли с делфи GetMem(LogPalette, 16);
Помогите пожалуйста с переводом этого кода на с++ или подскажите другой вариант смены палитры.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.11.2011, 23:11
Ответы с готовыми решениями:

Как происходит изменение разрешения изображения (bmp)
Мне нужно изменить разрешение изображения файла bmp, но я не понимаю как выбирается цвет для новых пикселей изображения. Как я понял на...

Пропуск палитры .bmp
Подскажите, пожалуйста, как пропустить палитру цветов в .bmp файле. Читал что она начинается с 54 байта, но длину не понял как считать. ...

Создание bmp изображения.(Нужна помощь)
Подскажите новичку пожалуйста, я изучаю С++ и пытаюсь создать библиотеку для рисования в файле расширения bmp но столкнулся с одной...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.11.2011, 23:11
Помогаю со студенческими работами здесь

Кривой вывод изображения в bmp-файле
всем привет, при записывании информации в bmp-файл столкнулся со следующей проблемой(см.вложение):слева исходный bmp-файл, справа - то, что...

Изменение bmp файла
Вечер добрый. нужно перезаписать bmp файл, изменив один пиксель. (лаба по защите информации, прячем байт в пикселе) я считываю файл в...

Как расшифровать цвета bmp изображения без таблицы?
Здравствуйте. Прочитанный мною файл bmp имеет следующий заголовок InfoHeader bitmapInfoHeader.biSize 40 ...

Изменение размера bmp стандартными средствами c++
Доброго времени суток, форумчане. Интересует такой вопрос: есть изображение bmp с глубиной 24 бита. Требуется провести децимацию: вырезать...

Запись чёрно-белого изображения bmp в двумерный массив и его сжатие/разжатие по Хаффману
Помогите, у меня задание: есть картинка (чёрно-белое изображение бмп) её необходимо записать в двумерный массив где b-чёрный пиксель...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Winforstrap или красявый дизайн своими руками на HTML+JS+Winform­s
anomal6 04.03.2025
Сидел тут вечером ковырял проект на MAUI, и как же глупо создаются пакеты MSIX и система обновлений пакета публикации, но не об этом. Бывает нужен современный дизайн программы а писать на MAUI,. . .
Формат данных для симуляции физики, посредством распространённы­­­­­­­х не обученных моделей.
Hrethgir 04.03.2025
Что-то как-то снова потерялось, зато катангенсы закатангесились в одном сообщении. На днях писал, что планирую для работы апгрейдить (на этот раз удачно) девайс для работы (конкретно - здоровья для,. . .
Концепция variadic
CoderHuligan 04.03.2025
Мне не очень нравится (а кому это нравится?) что у нас есть отдельно компилятор, отдельно линковщик, причем со своим собственным командным языком. При этом усложнении надо знать помимо языка. . .
Java Record или Kotlin Data Class: что лучше для неизменяемых данных
Wired 04.03.2025
Java Record и Kotlin Data Class — два мощных инструмента для обуздания неизменяемых структур данных, каждый со своим уникальным подходом к решению этой задачи. История их появления весьма. . .
Создание производительны­­­х API с Java и gRPC
Wired 04.03.2025
В мире микросервисной разработки вопрос производительности часто становится краеугольным камнем. И хотя REST API давно завоевал сердца разработчиков своей простотой и интуитивностью, при высоких. . .
Что нового в JDK 24
Wired 04.03.2025
JDK 24 — это настоящий прорыв в эволюции Java, который кардинально меняет правила игры. В этом релизе разработчики Oracle наконец-то довели до ума множество критически важных улучшений в. . .
Разработка блокчейн с использованием Java: смарт-контракты и dApp
Wired 04.03.2025
Погружаясь в мир блокчейн-разработки на Java, разработчик получает доступ к внушительному арсеналу инструментов. В отличие от Solidity, который "заперт" в экосистеме Ethereum, Java предоставляет. . .
WebAssembly в Kubernetes
stackOverflow 03.03.2025
В современной экосистеме облачных технологий WebAssembly (Wasm) становится все более значимым компонентом, предлагая уникальный подход к выполнению кода в распределенных системах. Эта технология. . .
GitHub Actions или Jenkins: Выбираем CI/CD платформу
stackOverflow 03.03.2025
Непрерывная интеграция и развертывание (CI/ CD) изменили подход к разработке программного обеспечения, превратив его в бесшовный процесс от написания кода до развертывания в продакшн. GitHub Actions и. . .
Автоматизация тестирования Pull Request в Kubernetes: Интеграция с GitHub Actions и GKE
stackOverflow 03.03.2025
Масштабные проекты с использованием Kubernetes требуют надежной системы тестирования изменений перед их внедрением в продакшн-среду. Традиционный подход с ручной проверкой Pull Request не справляется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru