Fórum Juntar Duas Imagens? #366658
02/12/2008
0
estou fazendo um programa para edição de fotus
Eu queria juntar duas imagens em uma só
Exemplo:
Na imagem 1 eu tenho a foto do cara e
Na imagem 2 eu tenho uma borda
Teria como eu juntar as duas imagens em uma só, formando assim a foto com a borda??[/b:0ce861ca0c]
Mortify
Curtir tópico
+ 0Posts
11/12/2008
Fabianosales
Tem sim, mas o modo de implementar vai depender de alguns fatores.
1- Você tem alguma implementação de camadas (layers) no programa?
2- Há suporte para pixels transparentes em seu projeto (canal alpha)?
3- As duas imagens estão com o mesmo formato de pixel?[/list]
Gostei + 0
17/12/2008
Mortify
mais é que eu já havia até desistido do projeto
Se poder me ajudar..
1. Não. (Tenho apenas dois Componentes Image)
2. Sim. Estou usando um componete pra usar imagens em Png.
3. Sim. Em mesmo formato e mesmo tamanho.[/b:02faae78bc]
Gostei + 0
17/12/2008
Fabianosales
Aqui há uma implementação de transparência em bitmaps padrão (TBitmap) de 32 bits.
A idéia é simples.
Cada pixel da imagem será formado por 4 componentes:
PRGB32 = ^TRGB32; TRGB32 = packed record B, G, R, A : byte; end;
A ordem dos campos RGBA está invertida de propósito, pois é dessa maneira que os bitmaps de 32bits são armazenados.
Agora, supondo que IMG1 seja a imagem de cima e BG1 seja a imagem de baixo, para mesclar as duas, basta percorrer os pixels da imagem IMG1 alterar BG1 assim:
BG1.B := BG1.B + (IMG1.B - BG1.B) * IMG1.A div 255; BG1.G := BG1.G + (IMG1.G - BG1.G) * IMG1.A div 255; BG1.R := BG1.R + (IMG1.R - BG1.R) * IMG2.A div 255;
Vale lembrar que esse método só funciona para imagens de 32bits. Se você quiser trabalhar com outros formatos, será presico adaptar o código.
Outra coisa é que no código do exemplo eu usei TBitmap.ScanLines em vez de Tbitmap.Canvas.Pixels para manipular os pixels da imagem porque trabalhar com ponteiros é mais rápido e mais flexível.
Qualquer dúvida, posta aí.
:wink:
Gostei + 0
26/12/2008
Mortify
da pra da uma mastigada pra mim ^^
Teu exemplo n abriu no meu delphi
Ta faltando algum componente =[[/b:f818b2bf0b]
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)