como comparar se duas imagens são iguais
:?: Como comparar se duas imagens (as quais são desenhadas em tempo de execução usando componente TImage) são iguais? Eu tentei várias formas como por exemplo:
if ImageCopiaImage1.Picture.Graphic <> ImageCopiaAntImage1.Picture.Graphic then .....
mas não deu certo.
Alguém pode me ajudar?
if ImageCopiaImage1.Picture.Graphic <> ImageCopiaAntImage1.Picture.Graphic then .....
mas não deu certo.
Alguém pode me ajudar?
Angelluiza
Curtidas 0
Respostas
Balceiro
12/04/2004
Bom o correto seria salvar as imagens para depois fazer a checagem.
Ai o delphi leria o conteúdo do arquivo e analizaria se os dois conteúdos são iguais.
Ai o delphi leria o conteúdo do arquivo e analizaria se os dois conteúdos são iguais.
GOSTEI 0
Angelluiza
12/04/2004
certo,
mas como o delphi vai ler o conteúdo do arquivo e analizar se os dois conteúdos são iguais?
mas como o delphi vai ler o conteúdo do arquivo e analizar se os dois conteúdos são iguais?
GOSTEI 0
Akelle Kara
12/04/2004
Use este código para comparar as duas imagens, basta passar seus dois [b:f00fee1b87]TImages[/b:f00fee1b87] como parâmetros (a função retorna True, se as imagens forem identicas e False se forem diferentes):
Qualquer dúvida, pode deixar uma msg como resposta a este tópico.
function CompararImgs(Image1, Image2: TImage): Boolean; var b1, b2: TBitmap; c1, c2: PByte; x, y, i, different, BytesPerPixel: Integer; begin b1 := Image1.Picture.Bitmap; b2 := Image2.Picture.Bitmap; Assert(b1.PixelFormat = b2.PixelFormat); different := 0; case b1.PixelFormat of pf1bit, pf4bit, pf8bit: BytesPerPixel := 1; pf15bit, pf16bit: BytesPerPixel := 2; pf24bit: BytesPerPixel := 3; pf32bit: BytesPerPixel := 4; end; for y := 0 to b1.Height - 1 do begin c1 := b1.Scanline[y]; c2 := b2.Scanline[y]; for x := 0 to b1.Width - 1 do for i := 0 to BytesPerPixel - 1 do begin Inc(different, Integer(c1^ <> c2^)); Inc(c1); Inc(c2); end; end; Result := (different <> 0); end;
Qualquer dúvida, pode deixar uma msg como resposta a este tópico.
GOSTEI 0