Como girar imagem de forma rápida ?

Delphi

03/11/2004

Boa tarde. Estou buscando saber como girar uma imagem (foto) .jpg ou .bmp em mais 90 ou menos 90 graus ( retrato paisagem ) em um compomente Timage.


Profamilton

Profamilton

Curtidas 0

Respostas

Beto_martini

Beto_martini

03/11/2004

Olá.

Não conheço nenhuma forma automatizada para isto.

via código, acho que vc. deveria criar um segundo timage, redimensiona-lo e copiar o conteúdo pixel por pixel de timage1 para timage2.

ex:

timage1.width = 200
timage1.height := 100

timage2.width := timage1.height
timage2.height := timage1.width

Então, construa função para copiar pixel por pixel.

timage2.canvas.pixels[x,y] := timage1.canvas.pixels[x,y]

Se precisar de ajuda para a função, entre em contato.

P.S: acho que a solução só funcionará para imagens BMP pois acredito que JPG não possui canvas.

Um abraço.

arm@netpar.com.br


GOSTEI 0
Profamilton

Profamilton

03/11/2004

Olá.
A solução dada eu já tinha feito, porém achei muito demorada e custosa em termos de processamento. Pensei haver uma forma mais ´limpa´.
No visualizador do windows XP tem uma opção para isso que age muito mais rápido. É este efeito que busco. Mas agradeço sua atenção.


GOSTEI 0
Tatuweb

Tatuweb

03/11/2004

Os exemplos dos links abaixo devem resolver o problema. O que aconteçe é que vc está rotacionando o bitmap usando a propriedade pixels provavelmente atrelada a loops for. Nesse caso a cada pixel ´movido´ é como se vc re-desenhasse o bitmap, o que deixa a rotina lenta. A alternativa é usar as funções copyrect e/ou scanline.

Nesse link tem um exemplo simples par rotacionar um bitmap:
http://delphi.about.com/cs/adptips2001/a/bltip1201_4.htm

Aqui tem outro mais com explicações mais detalhadas sobre as funções scanline e copyrect:
http://www.efg2.com/Lab/ImageProcessing/RotateScanline.htm


GOSTEI 0
Sady

Sady

03/11/2004

Nenhum dos links funciona. Eu estou com o mesmo problema de demora pra girar a imagem.
Para inverter a imagem eu achei uma solução rápida. Mas eu preciso girar a imagem.
JPEG não consegui girar.
Daí converti para BMP, girei a imagem e voltei a converter pra JPEG.
A conversão é rápida, mas o girar é demorado.
Se alguém puder dar alguma sugestão, eu agradeço!
GOSTEI 0
POSTAR