Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 25.02.2012
Сообщений: 39

Преобразовать изображение в другой цвет

25.06.2012, 15:48. Показов 4396. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как преобразовать изображение в другой цвет,
к примеру в фиолетовый или в градации серого????
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.06.2012, 15:48
Ответы с готовыми решениями:

Значение первого бита в файле преобразовать в цвет пикселя
Если создал не в том разделе, прошу перенести в нужный. Спасибо, простите! Я не знаю как задать правильно вопрос или что мне искать в...

Запустить Color Dialog и перекрасить вершину в другой цвет
Всем доброго времени суток. Задача такая.При нажатии на канве у меня рисуется вершина графа (обычный кружок) и заносятся координаты точек в...

Как преобразовать цвет System.Drawing.Color в цвет API (UINT)
Всем здравствуйте. <DllImport("gdi32.dll")> _ Public Shared Function CreatePen(ByVal fnPenStyle As Integer, ByVal nWidth As Integer,...

17
Now I Matrix
137 / 134 / 28
Регистрация: 01.03.2010
Сообщений: 223
25.06.2012, 16:53
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Graphics::TBitmap *img = new Graphics::TBitmap;
 img->Width  = Image1->ClientWidth;
 img->Height = Image1->ClientHeight;
 img->Canvas->CopyRect(TRect(0,0,img->Width,img->Height),Image1->Canvas,TRect(0,0,img->Width,img->Height));
 img->PixelFormat = pf24bit;
 TRGBTriple *rgb = NULL;
 for(int y = 0; y<img->Height; ++y)
 {
  rgb = (TRGBTriple*)img->ScanLine[y];
  for(int x = 0; x<img->Width; ++x)
  {
   const BYTE red =  0.322 * rgb[x].rgbtRed +
                     0.550 * rgb[x].rgbtGreen +
                     0.071 * rgb[x].rgbtBlue;
   rgb[x].rgbtGreen = red;
   rgb[x].rgbtRed = red;
   rgb[x].rgbtBlue = red;
  }
 }
 Image1->Canvas->CopyRect(TRect(0,0,img->Width,img->Height),img->Canvas,TRect(0,0,img->Width,img->Height));
 delete img; img = NULL;
 Image1->Refresh()
Берёт изображение из Image1, преобразует в градации серого, возвращает в Image1
0
1 / 1 / 0
Регистрация: 25.02.2012
Сообщений: 39
25.06.2012, 17:42  [ТС]
а как поменять цвет,
ну мне нужно в фиолетовый???
0
Now I Matrix
137 / 134 / 28
Регистрация: 01.03.2010
Сообщений: 223
25.06.2012, 17:54
Достаточно уточнить каналы,
C++
1
2
3
//Уточнение каналов для фиолетового цвета
rgb[x].rgbtRed   = 139;
rgb[x].rgbtBlue  = 255;
1
1 / 1 / 0
Регистрация: 25.02.2012
Сообщений: 39
25.06.2012, 18:01  [ТС]
большое спасибо))))))
0
6 / 6 / 2
Регистрация: 06.04.2011
Сообщений: 313
28.02.2013, 22:43
Спасибо, Ирен Учиха, за интересную тему и Matrix за ответ.
Но общий вопрос всё же остаётся: как преобразовать изображение в градации любого цвета?
В ответе Matrix: "Достаточно уточнить каналы". Что это такое, и как "уточнять каналы" для любого цвета?
Спасибо.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
28.02.2013, 23:32
"это" - соотношение "количества" цветов RGB - крвсного/зеленого/синего - меняете значения после "=" и наслаждаетесь результатом. Значения RGB нужного цвета можно посмотреть в любом графическом редакторе или использовать компонент расширенного выбора цвета самого билдера. Для тех, кто в танке - это как краски смешивать из трех разных банок в разных пропорциях.
0
6 / 6 / 2
Регистрация: 06.04.2011
Сообщений: 313
01.03.2013, 10:00
Спасибо, конечно, LK, но "танкисты" хотят знать точно - "сколько вешать граммов" .
Например, есть цвет с R/G/B = 150/50/120, как перекрасить любую картинку в градации этого цвета?
Т.е.
C++
1
2
3
   rgb[x].rgbtRed    = ?
   rgb[x].rgbtGreen = ?
   rgb[x].rgbtBlue   = ?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
01.03.2013, 11:45
Цитата Сообщение от Matrix Посмотреть сообщение
Достаточно уточнить каналы,
C++
1
2
3
//Уточнение каналов для фиолетового цвета
rgb[x].rgbtRed   = 139;
rgb[x].rgbtBlue  = 255;
видимо,
C++
1
2
3
rgb[x].rgbtRed = 150; // красного полусладкого
rgb[x].rgbtGreen = 50; // мятного
rgb[x].rgbtBlue = 20; // кюрасао
0
6 / 6 / 2
Регистрация: 06.04.2011
Сообщений: 313
01.03.2013, 11:54
Цитата Сообщение от LK Посмотреть сообщение
видимо,
C++
1
2
3
rgb[x].rgbtRed = 150; // красного полусладкого
rgb[x].rgbtGreen = 50; // мятного
rgb[x].rgbtBlue = 20; // кюрасао
Ценю ваше чувство юмора, но всё-таки хотелось бы найти ответ на вопрос .
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
01.03.2013, 11:58
так это и был ответ на вопрос, или я не понял вашей задачи

по вашим данным должен получиться вот такой цвет:

кагор, видимо
0
6 / 6 / 2
Регистрация: 06.04.2011
Сообщений: 313
01.03.2013, 12:50
Цитата Сообщение от LK Посмотреть сообщение
или я не понял вашей задачи
Видимо, так. Мне нужно не залить картинку одним цветом, а перекрасить её в градации какого-то, любого цвета, например, R=150, G=50, B=120. Подобно тому, как она перекрашивается в градации серого.
Например, есть чёрно-белые фотографии (градации серого), а есть сепия - градации коричневого.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
01.03.2013, 13:42
вы код писать пробовали, или только вопросы задаете?

Перевод изображения в красный цвет, сохранив градации яркости
0
6 / 6 / 2
Регистрация: 06.04.2011
Сообщений: 313
01.03.2013, 14:09
Цитата Сообщение от LK Посмотреть сообщение
вы код писать пробовали, или только вопросы задаете?
Имею привычку обращаться за помощью только после безуспешных попыток найти решение самостоятельно.
У меня под рукой код, за ссылку спасибо, конечно, я это видел раньше и пробовал - в градации серого и основных цветов (красный, зелёный или синий) хорошо преобразуется. Мне нужно перекрасить картинку в градации любого, заранее неизвестного мне цвета. Наверное, это просто, и я блуждаю в трёх соснах, поэтому и прошу подсказки.
0
6 / 6 / 2
Регистрация: 06.04.2011
Сообщений: 313
01.03.2013, 15:58
Кстати, перекраска в градиент красного по предложенному алгоритму тоже неточна (не все цвета оказались в красной палитре).
Миниатюры
Преобразовать изображение в другой цвет  
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
01.03.2013, 16:11
я по жизни наполовину дальтоник.. может, поэтому всей сути задачи не воспринимаю... . Мне, например, "заранее известны" цвета красный, синий, зеленый, слагающие палитру RGB. Допустим, можно говорить о желтом цвете - комбинация красного и зеленого в равных долях. Возможно еще о каком-то (напр. коричневом), опять-таки в равных долях. А как можно говорить о преобразовании в произвольный цвет без определения условий соотношения слагающих цветов?! Мне не ясно...
0
2 / 2 / 0
Регистрация: 21.12.2012
Сообщений: 36
01.03.2013, 16:23
Цитата Сообщение от vlad2 Посмотреть сообщение
Ценю ваше чувство юмора, но всё-таки хотелось бы найти ответ на вопрос .
Набей в яндексе "HTML цвета" и будет тебе счастье =)
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
01.03.2013, 17:06
Цитата Сообщение от nick42 Посмотреть сообщение
А как можно говорить о...
а это от блондинок: "апатамушта" .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.03.2013, 17:06
Помогаю со студенческими работами здесь

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

Заменить цвет на изображение
Как правильно поменять строку #yt_slideshow, #yt_header{background-color:'.$yt-&gt;getParam('header-bgcolor').' ;} что бы там вместе цвета...

Нанести на изображение текст в цвет
Доброго времени суток! Надо нанести текст в тон изображения, т.е. чтобы текст не перекрывал изображение и имел близкий оттенок....

Преобразовать цвет в строку и обратно
Здраствуйте. Хочу спросить есть ли в c# возможность 1 Преобразовать цвет в строкук и обратно чтобы к примеру если цвет является красным...

Преобразовать изображение в бинарное
Есть .tif с такими значениями пикселов: 255 Fill 0 Clear 1 q 2 w 3 e 4 r А надо сделать с такими 0 Clear


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru