Como girar imagem de forma rápida ?
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
Curtidas 0
Respostas
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
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
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.
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
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
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
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!
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