Ir para conteúdo
Fórum Script Brasil
  • 0

Rgb


MrChez

Pergunta

Boa tarde Pessoal!

Preciso "pegar" os valores RGB de um pixel em determinada imagem, mas atualmente apenas consigo o valor em números.

Tentei usar canvas, mas não obtive o resultado esperado!

Tem alguma forma para obter esses valores separados?

Tem como alterar esses valores depois? Pois tenho que mudar a cor do pixel conforme pedido do usuário!

muito obrigado!

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Churc,

obrigado pela atenção, mas não entendi muito bem o seu código....

o código é bem avançado e eu preciso algo + simples, tvz por isso não consegui entender!

pelo que entendi, você tem todos os valores juntos, mas eu preciso do valor de cada item, um para cada cor.

não sei c fui bem claro....

Abraço

Churc,

dá uma olhada nisso:

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

var

msg : string;

begin

msg := '';

msg := 'Red: ' + IntToStr(GetRValue(Image1.Canvas.Pixels[X,Y]));

msg := msg + ' || Green: ' + IntToStr(GetGValue(Image1.Canvas.Pixels[X,Y]));

msg := msg + ' || Blue: ' + IntToStr(GetBValue(Image1.Canvas.Pixels[X,Y]));

form1.caption := msg;

end;

É um TImage que carrega uma imagem.

Coloqei os valores no título do form só pra ver eles mudando.

C algum dia alguém + precisar d algo parecido, tá aí uma contribuição pro fórum ;)

Agora preciso transformar esses valores em hexadecimal.

E depois alterar o valor do pixel da imagem.

C tiver alguma coisa que possa me ajudar, fico agradecido!

Abraço

Link para o comentário
Compartilhar em outros sites

  • 0

opa

Que bom que você conseguiu....

Se eu entendi bem, seria mais ou menos assim

Pra alterar o pixel da imagem é mesma coisa que você está fazendo

pra pegar o Pixel, ai só passar um TColor... exemplo

var

RGB: TColor;

begin

RGB := $00FFFFFF; //Branco

Image1.Canvas.Pixels[0,0] := RGB;

RGB := $00000000; //Preto

Image1.Canvas.Pixels[0,1] := RGB;

Logo o Pixel X = 0 e Y = 0 vai ser branco e o Pixel X = 0 e Y = 1 vai ser preto...

Pra transformar de TColor para Hexadecimal você pode usar

a seguinte função

function TColorToHex(Color : TColor) : string;
begin
   Result :=
     IntToHex(GetRValue(Color), 2) +
     IntToHex(GetGValue(Color), 2) +
     IntToHex(GetBValue(Color), 2);
end;
Pra usar serial var Hex: String; RGB: TColor; begin RGB := $00FFFFFF; //Branco Hex := TColorToHex(RGB); Pra transformar de Hex pra TColor
function HexToTColor(sColor : string) : TColor;
begin
   Result :=
     RGB(
       StrToInt('$'+Copy(sColor, 1, 2)),
       StrToInt('$'+Copy(sColor, 3, 2)),
       StrToInt('$'+Copy(sColor, 5, 2))
     );
end;

Pra usar seria exemplo

var

Hex: String;

RGB: TColor;

begin

RGB := $00FFFFFF; //Branco

Hex := TColorToHex(RGB);

RGB := HextoTColor(Hex);

e por ai vai...

Entendeu mais ou menos?

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...