PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Como alterar a cor da imagem? #416379

08/05/2012

0

Ola galera tudo bem? Aqui estou eu novamente recorrendo ao fórum para ver se tem como resolver uma duvida minha.
Bom é o seguinte, alguém sabe como eu mudo a saturação (acho que é esse o nome) de uma imagem pelo Delphi?


A imagem original é essa:
[IMG]http://i47.tinypic.com/2nvs8ch.jpg[/IMG]


Queria que ela ficasse assim avermelhada (ou qualquer outra cor desejada):
[IMG]http://i46.tinypic.com/sq4n83.jpg[/IMG]


Eu encontrei esse códigos abaixo pesquisando na net, porem eles deixa a imagem apenas sem cor (preta e branca). Eu tentei mudar para que ficasse como eu desejo, porem não consegui!

Código 1:
procedure efeito1; 
var contador1, contador2:Integer; 
    vermelho, verde, azul:Integer; 
    tom:Integer; 
begin 

    Self.DoubleBuffered:=True; 

    for contador1:=0 to Image1.Width do 
    begin 

        for contador2:=0 to Image1.Height do 
        begin 
        vermelho:=GetRValue(ColorToRGB(Image1.Picture.Bitmap.Canvas.Pixels[contador1, contador2])); 
        verde:=GetGValue(ColorToRGB(Image1.Picture.Bitmap.Canvas.Pixels[contador1, contador2])); 
        azul:=GetBValue(ColorToRGB(Image1.Picture.Bitmap.Canvas.Pixels[contador1, contador2])); 
        tom:=Round(vermelho * 0.3 + verde * 0.59 + azul * 0.11); 
        Image1.Picture.Bitmap.Canvas.Pixels[contador1, contador2]:=RGB(tom, tom, tom); 
        end; 

    end; 
    
end;



Código 2:
procedure efeito2; 
var i, j:integer; 
    R, G, B:Integer; 
    Tom:Integer; 
begin 

    for i:=0 to Image2.Width do 
    begin 

        for j:=0 to Image1.Width do 
        begin 
        R:=GetRValue(ColorToRGB(Image2.Picture.Bitmap.Canvas.Pixels[i, j])); 
        G:=GetGValue(ColorToRGB(Image2.Picture.Bitmap.Canvas.Pixels[i, j])); 
        B:=GetBValue(ColorToRGB(Image2.Picture.Bitmap.Canvas.Pixels[i, j])); 

            if R > G then 
            begin 

                if R > B then 
                Tom:=R 
                else 
                Tom:=B; 

            end 
            else 
            begin 

                if G > B then 
                Tom:=G 
                else 
                Tom:=B; 

            end; 

            Image2.Picture.Bitmap.Canvas.Pixels[i, j]:=RGB(Tom, Tom, Tom); 

        end; 

    end; 
    
end;



Observação: Eu gero essa imagem através de um print screen e salvo ela em uma variável do tipo TBitmap onde manipulo ela para depois mostrar em um componente TImage.
Bom é só isso se alguém puder postar um exemplo, ou talvez até de pra fazer nesses códigos mesmo que postei de repente, eu agradeço.


Obrigado a todos do fórum. Abraços
Carlos Catanduva

Carlos Catanduva

Responder

Posts

08/05/2012

Carlos Catanduva

Não consegui postar a imagem, mais o link foi beleza. Será q ninguém sabe como deixar a imagem com uma cor prodominante?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar