46 / 46 / 1
Регистрация: 13.08.2012
Сообщений: 456
1

Поменять тон изображения

29.11.2012, 01:03. Показов 947. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как поменять тон изобр. загруженого в Bitmap, думал к каждому пикселю(цвет) прибавить число, не вишло, помогите, Спасибо
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2012, 01:03
Ответы с готовыми решениями:

Тон-генератор
Есть какие-нибудь маленькие аналоговые схемки для изготовления тон-генератора? Мне нужно искать...

Преобразовать тон в цифру?
есть ли фозможность, имея модем (например), воткнуть в него телефон и распознать тон нажатия...

Хороший тон программирования
Можно ли считать хорошим тоном в программировании? Например вот такой вот код? #define FOR...

Дурной тон программирования
Часто слыщу такую фразу, вот и интересно, кто что по этому поводу думает. Что можно отнести к...

2
angstrom
29.11.2012, 02:27 2
Лучший ответ Сообщение было отмечено ZAYEC77 как решение

Решение

Не совсем понятно что нужно, но имеется такой пример
Кликните здесь для просмотра всего текста
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
procedure ModColors(Bitmap: TBitmap; Color: TColor);
type
  TRGB = record
    B, G, R: Byte;
  end;
  pRGB = ^TRGB;
var
  r1, g1, b1: Byte;
  x, y: Integer;
  Dest: pRGB;
  A: Double;
 
  function GetR(const Color: TColor): Byte;
  begin
    Result := Lo(Color);
  end;
 
  function GetG(const Color: TColor): Byte;
  begin
    Result := Lo(Color shr 8);
  end;
 
  function GetB(const Color: TColor): Byte;
  begin
    Result := Lo((Color shr 8) shr 8);
  end;
 
  function BLimit(B: Integer): Byte;
  begin
    if B < 0 then
      Result := 0
    else if B > 255 then
      Result := 255
    else
      Result := B;
  end;
 
begin
  Bitmap.PixelFormat := pf24Bit;
  r1 := Round(255 / 100 * GetR(Color));
  g1 := Round(255 / 100 * GetG(Color));
  b1 := Round(255 / 100 * GetB(Color));
  for y := 0 to Bitmap.Height - 1 do
  begin
    Dest := Bitmap.ScanLine[y];
    for x := 0 to Bitmap.Width - 1 do
    begin
      with Dest^ do
      begin
        A := (r + b + g) / 300;
        with Dest^ do
        begin
          R := BLimit(Round(r1 * A));
          G := BLimit(Round(g1 * A));
          B := BLimit(Round(b1 * A));
        end;
      end;
      Inc(Dest);
    end;
  end;
end;
 
// Пример использования: 
 
ModColors(Bitmap, RGB(218, 219, 230));


Вот другой
Кликните здесь для просмотра всего текста

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
function SetRGBChannelValue(Bitmap: TBitmap; Red, Green, Blue: Integer): Boolean;
var
  i, j: Integer;
  rgbc: array[0..2] of Byte;
  c: TColor;
  r, g, b: Byte;
begin
  if (Red = 0) and (Green = 0) and (Blue = 0) then
  begin
    Result := False;
    Exit;
  end;
 
  for i := 0 to Bitmap.Height do
  begin
    for j := 0 to Bitmap.Width do
    begin
      c := Bitmap.Canvas.Pixels[j, i];
      rgbc[0] := GetRValue(c);
      rgbc[1] := GetGValue(c);
      rgbc[2] := GetBValue(c);
 
      if not (rgbc[0] + Red < 0) and not (rgbc[0] + Red > 255) then
         rgbc[0] := rgbc[0] + Red;
      if not (rgbc[1] + Green < 0) and not (rgbc[1] + Green > 255) then
         rgbc[1] := rgbc[1] + Green;
      if not (rgbc[2] + Blue < 0) and not (rgbc[2] + Blue > 255) then
         rgbc[2] := rgbc[2] + Blue;
 
      r := rgbc[0];
      g := rgbc[1];
      b := rgbc[2];
 
      Bitmap.Canvas.Pixels[j, i] := RGB(r, g, b);
    end;
  end;
 
  Result := True;
end;
 
// Пример использования: 
 
SetColorValue(Bitmap, Spinedit1.Value, Spinedit2.Value, Spinedit3.Value);

Первый меняет все цвета на оттенки одного, второй меняет цветовые каналы.
240 / 218 / 46
Регистрация: 17.04.2010
Сообщений: 525
29.11.2012, 10:51 3
ZAYEC77, можно перевести RGB в HSV, изменить Hue — цветовой тон, после чего обратно в RGB.
1
29.11.2012, 10:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2012, 10:51
Помогаю со студенческими работами здесь

Хороший тон для #include
Простите за глупый вопрос, но всё же интересно знать ответ :) Есть 2 заголовочных файла. 1.h ...

Хороший тон программирования. Не догма - но полезно.
У каждого опытного разработчика , наверняка, с опытом формируются негласные правила .. которые...

Хороший или плохой тон программирования
вот в книгах читаю что гото туфта полная..на форуме тоже так говорят,а почему?очень нужная...

Хороший ли тон, запитывать офис через wifi?
Здравствуйте. Интересует такой вопрос. Ведь можно купить качественные wifi точки. Щас в тренде...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru