С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
DarkAnima
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 1
#1

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

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

Ребят, помогите пожалуйста. У меня стоит задача изменить палитру в 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);
Помогите пожалуйста с переводом этого кода на с++ или подскажите другой вариант смены палитры.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2011, 23:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Изменение палитры bmp изображения (C++):

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

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

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

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

Контрастирование, прореживание, построение гистограммы tiff изображения и переформатирование в bmp формат - C++
Ребят , кто может , отзовитесь!!! Срочно нужна помощь знающих людей! В этой программе прореживание должно делаться по вот этой формуле...

Работа с BMP-файлами (класс "8 битное BMP изображение) - C++
Написать класс "8 битное BMP изображение".Класс должен содержать 3 конструктора: конструктор по умолчанию, конструктор с параметрами и...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2011, 23:11
Привет! Вот еще темы с ответами:

Изменение контрастности изображения - C++
Есть задание: Изменение контрастности изображения, представленного в градациях яркости. Сравнивается значение яркости исходного пиксела с...

Изменение размера изображения - C++
Всем привет! Помогите написать скрипт изменения размера изображения. Скрипт создания скриншота import System.IO; // increment...

Изменение глубины цвета изображения - C++
сам изучаю C#, но в C# нет такой возможности с *.bmp. Мне нужно изменить глубину цвета *.bmp изображения. Возможно вы можете такое...

Изменение контрастности изображения в файле - C++
ребята, выручайте! нужна программа изменения контрастности графического файла. на языке С++, должно быть окошко где открывается картинка, а...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.