Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.08.2008, 20:31
GeG GeG вне форума
Прохожий
 
Регистрация: 19.07.2008
Сообщения: 24
Репутация: 0
По умолчанию Как програмно определить цвет

народ помогите как мне програмно определить цвет у меня чёрно серая картинка.... я хочу отделить чисто чёрный от серого цвета (серый полностью убрать чтобы было чёрно белое изображение). помогите плизз как это реализовать?

Последний раз редактировалось GeG, 06.08.2008 в 20:33.
Ответить с цитированием
  #2  
Старый 06.08.2008, 21:12
dmdx dmdx вне форума
Начинающий
 
Регистрация: 24.05.2008
Адрес: Москва
Сообщения: 133
Репутация: 15
По умолчанию

У тебя серая картинка на черном фоне?
Если тебе надо заменить например в картинке черный цвет на белый делай так
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 i,j: integer;
begin
 for i:=0 to Image1.Picture.Width do
  for j:=0 to Image1.Picture.Height do
   if Image1.Canvas.Pixels[i,j]=clBlack then
    Image1.Canvas.Pixels[i,j]:=clWhite;
end;
Ответить с цитированием
  #3  
Старый 06.08.2008, 22:19
Burka Burka вне форума
Начинающий
 
Регистрация: 10.06.2007
Сообщения: 163
Репутация: 10
По умолчанию

Только наверно это будет немного посложнее, придется сравнивать с диапазоном цветов, потому что на картинке будет куча оттенков серого
P.S.
Серый это когда три цвета в RGB одиннаковые, (1,1,1)..(255,255,255)
Ответить с цитированием
  #4  
Старый 06.08.2008, 22:20
GeG GeG вне форума
Прохожий
 
Регистрация: 19.07.2008
Сообщения: 24
Репутация: 0
По умолчанию


вот типа такой картинки... в данном примере всего 2 оттенка серого и 1 чёрный... вот мне нужно чтобы програмно можно было отделить чёрный цвет а серый превратить в белый
вот так
Ответить с цитированием
  #5  
Старый 06.08.2008, 23:03
dmdx dmdx вне форума
Начинающий
 
Регистрация: 24.05.2008
Адрес: Москва
Сообщения: 133
Репутация: 15
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 i,j: integer;
 tmp: Tcolor;
begin
 tmp:=Image1.Canvas.Pixels[0,0]; // или Image1.Canvas.Pixels[1,1]
 for i:=0 to Image1.Picture.Width do
  for j:=0 to Image1.Picture.Height do
   if Image1.Canvas.Pixels[i,j]=tmp then
    Image1.Canvas.Pixels[i,j]:=clWhite;
end;

Добжно работать, закрасишь фон. для закраски всего серого надо писать подцункцию. поределеющую цвета на картинки

Последний раз редактировалось dmdx, 06.08.2008 в 23:06.
Ответить с цитированием
  #6  
Старый 06.08.2008, 23:12
GeG GeG вне форума
Прохожий
 
Регистрация: 19.07.2008
Сообщения: 24
Репутация: 0
По умолчанию

угу я уже это попробовал там всего 1 линия стала белой и всё (((
Ответить с цитированием
  #7  
Старый 06.08.2008, 23:21
dmdx dmdx вне форума
Начинающий
 
Регистрация: 24.05.2008
Адрес: Москва
Сообщения: 133
Репутация: 15
По умолчанию

Цитата:
Сообщение от GeG
угу я уже это попробовал там всего 1 линия стала белой и всё (((

Значит у тебя картинка не 16 цветовая а 256 или больше. тут надо только путем сравнения как говорит Burka. Приши подфункцию

Код:
function GetTrueGrey(inParam: Tcolor): integer;
begin
 // Если inParam = оттенку серого то возвращать 0 в противном случае 1
 // так же можно использовать Boolean в качестве возврата.
 // надо разложить цвет на R G B отдельно и сравнить если они одинаковые то гуд
end;
Ответить с цитированием
  #8  
Старый 06.08.2008, 23:14
dmdx dmdx вне форума
Начинающий
 
Регистрация: 24.05.2008
Адрес: Москва
Сообщения: 133
Репутация: 15
По умолчанию

Если картинка действительно 256 цветов или 16 цветов. то можно написать небольшой тип перечисления или множества куда будут заноситься все цвета серого и сообветственно если это цвет серого оттенка затирать.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:35.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025