• 0
Sign in to follow this  
schaukoski

Diminuir Tamanho De Imagem.(resolvido)

Question

Olá..

Estou com dúvidas sobre isto.

Eu tenho uma imagem, em uma variável Image, do tipo TBitmap, .

O que tem nessa variável foi capturado de uma WEBCAM, ou seja, não sei o valor de tamanho dela.

Como ela estava vindo muito grande ( creio que 360x120 ), eu resolvi dar um STRETCH = True, para fikar do tamanho do meu DBImage que não é muito grande.

Mas isto não resolve, porque ele diminui certinho para o tamanho do DBImage que eu tenho, mas o tamanho dela quando salvo no BD ainda é muito grande. (255kbts).

Como Diminuir o tamanho dela quando ela está na variavel Image?

Vou usar um método de explicação que normalmente funciona... Um Tipo exemplo:

Image.Resizeto.100x80;

Obrigado pela atenção!, Até mais!

Edited by schaukoski

Share this post


Link to post
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Opa

schaukoski isso já foi discutido inclusive em tópicos seus...

Nesse post do Micheus já está explicando como fazer isso...

Repare o seguinte no post do Micheus...

MakeThumbNail(Image1.Picture.Graphic, BmpDst, 100, 100);

Make = Fazer

Thumbnail = Miniatura

aSource = Imagem original

aDest = Imagem redimensionada

iWidth = Comprimento

iHeigth = Altura

então do jeito que você diz seria:

MakeThumbNail(Image1.Picture.Graphic, BmpDst, 100, 80);

Agora BmpDst está no tamanho 100x80 e com certeza está

com seu tamanho reduzido...

Entendeu?

abraço

Share this post


Link to post
Share on other sites
  • 0

Ah! Sim desculpe.

Eu não intendi muito bem.

Então eu adiciono essa procedure no meu form.

Aí, como que eu chamo a procedure? como que eu falo pra ele redimencionar?

makethumbnail; ?

image1.assign(aDest);

A pergunta é como que eu chamo o thumbnail? , Obrigado.

Desculpe, eu pderia usar, em vez dessa procedure toda, apoenas um aDest.Canvas.StretchDraw?

por exemplo

minhaimagem.canvas.stretchdraw(110,100); ?

Obrigado

Share this post


Link to post
Share on other sites
  • 0

Resolvido!

Eu resolvi meu problema assim:

aDest:= tbitmap.create;
aDest.Width := 121;
aDest.Height := 97;
aDest.Canvas.StretchDraw(Rect(0, 0, aDest.width, aDest.Height), image);
Eu estava tentando com o seguinte código e não dava de jeito nenhum :
aDest:= tbitmap.create;
aDest.Canvas.StretchDraw(Rect(0, 0, 121, 97), image);

Porque será? estranho, pra mim , não é a mesma coisa?! hehe Obrigado!

Edited by schaukoski

Share this post


Link to post
Share on other sites
  • 0
aDest:= tbitmap.create;
aDest.Width := 121;
aDest.Height := 97;
aDest.Canvas.StretchDraw(Rect(0, 0, aDest.width, aDest.Height), image);
Eu estava tentando com o seguinte código e não dava de jeito nenhum :
aDest:= tbitmap.create;
aDest.Canvas.StretchDraw(Rect(0, 0, 121, 97), image);

Porque será? estranho, pra mim , não é a mesma coisa?! hehe Obrigado!

Não, não é a mesma coisa.

Quando você cria o bitmap (TBitmap.Create) ele tem as dimensões 0x0 e sempre que você desenha(usa o canvas) algo além do tamanho do bitmap, o excesso pode ser truncado (depende da propriedade autostretch), mas neste caso não teria jeito mesmo.

Para o seu caso (desenhar no bitmap após criá-lo) você tem que definir o tamanho dele configurando sua largura(Width) e altura(Height). Quando você carreta a imagem de um arquivo ou faz o assign, isto não é necessário porque estes métodos se encrarregam de fazer isso.

Abraços

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this