MrChez Postado Fevereiro 21, 2007 Denunciar Share Postado Fevereiro 21, 2007 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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Fevereiro 21, 2007 Denunciar Share Postado Fevereiro 21, 2007 OpaDa uma olhada se isto te ajuda - postabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MrChez Postado Fevereiro 23, 2007 Autor Denunciar Share Postado Fevereiro 23, 2007 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çoChurc,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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Fevereiro 23, 2007 Denunciar Share Postado Fevereiro 23, 2007 opaQue bom que você conseguiu....Se eu entendi bem, seria mais ou menos assimPra alterar o pixel da imagem é mesma coisa que você está fazendopra pegar o Pixel, ai só passar um TColor... exemplovarRGB: TColor;beginRGB := $00FFFFFF; //BrancoImage1.Canvas.Pixels[0,0] := RGB;RGB := $00000000; //PretoImage1.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 usara seguinte funçãofunction 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 exemplovarHex: String;RGB: TColor;beginRGB := $00FFFFFF; //BrancoHex := TColorToHex(RGB);RGB := HextoTColor(Hex);e por ai vai...Entendeu mais ou menos?abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
MrChez
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
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.