Fórum Padronizar Imagem #268329
13/02/2005
0
Então como é que na hora de salvar eu padronizo o tamanho das fotos para que fiquem com 80 x 80, por exemplo.
Mssilva
Curtir tópico
+ 0Posts
13/02/2005
Beppe
function PadronizaTamanho(Imagem: TGraphic; W, H: Integer): TGraphic; var B: TBitmap; begin B := TBitmap.Create; try B.Width := W; B.Height := H; B.Canvas.StrecthDraw(Rect(0, 0, W, H), Imagem); Result := Imagem.ClassType.Create; Result.Assign(B); finally B.Free; end; end;
Chame assim:
Nova := PadronizaTamanho(SuaImagem, 80, 80); try Nova.SaveToFile(´nome_do_arquivo.ext´); finally Nova.Free; end;
A função deve criar uma nova imagem do mesmo tipo da imagem passada como argumento.
Eu não testei o código, então por favor me retorne, se deu certo ou não.
T+
Gostei + 0
13/02/2005
Mssilva
B.Canvas.StrecthDraw(Rect(0, 0, W, H), Imagem);
Erro:
[Error] UnitCadCds.pas(214): Undeclared identifier: ´StrecthDraw´
[Error] UnitCadCds.pas(215): Incompatible types: ´TGraphic´ and ´TObject´
Estou fazendo assim para garregar a imagem jpg ou bitmap:
procedure TFrmCadCds.btnCarregarClick(Sender: TObject);
begin
If dscds.State in [dsInsert, dsEdit] then
begin
OpenPictureDialog1.Execute;
Caminho:=OpenPictureDialog1.FileName;
if OpenPictureDialog1.FileName ´´ Then //Begin
//Label2.Caption:= ´Origem da Foto = ´+ caminho;
imgFoto.Picture.LoadFromFile(Caminho);
btnCarregar.Enabled:= False;
btnSalvar.Enabled:= True;
//end;
end
else
ShowMessage(´Para adcionar uma foto você deve criar uma nova banda!´);
end;
Para Gravar a imagem na pasta:
procedure TFrmCadCds.btnSalvarClick(Sender: TObject);
begin
if DirectoryExists(´C:\Cadastro de CDS\Bin\Fotos´) then
begin
imgFoto.Picture.SaveToFile(´C:\Cadastro de CDS\Bin\Fotos\´+edtCodigo.Text+´.jpg´);
ShowMessage(´Foto Salva com Sucesso´);
imgFoto.Picture:= Nil;
btnSalvar.Enabled:= false;
btnCarregar.Enabled:= true;
end
else
begin
ShowMessage(´Caro usuário não foi possível encontrar´+#13+
´A pasta onde ira ficar as fotos´);
ImgFoto.Picture:= Nil;
btnSalvar.Enabled:= false;
btnCarregar.Enabled:= true;
end;
end;
A imagem é gravada com o código da banda para pader visualizar em outro form
Como encaxo essa função que me envio
Des de já muito obrigado :D
Gostei + 0
13/02/2005
Beppe
function PadronizaTamanho(Imagem: TGraphic; W, H: Integer): TGraphic; var B: TBitmap; begin B := TBitmap.Create; try B.Width := W; B.Height := H; B.Canvas.StretchDraw(Rect(0, 0, W, H), Imagem); Result := Imagem.ClassType.Create; Result.Assign(B); finally B.Free; end; end;
Veja agora. ;)
Gostei + 0
13/02/2005
Mssilva
Fiz assim:
procedure TFrmCadCds.btnSalvarClick(Sender: TObject);
Var
Nova : TGraphic;
begin
if DirectoryExists(´C:\Cadastro de CDS\Bin\Fotos´) then
begin
Nova:= PadronizaTamanho(imgFoto.Picture.Bitmap,80,80);
imgFoto.Picture.SaveToFile(´C:\Cadastro de CDS\Bin\Fotos\´+edtCodigo.Text+´.jpg´);
ShowMessage(´Foto Salva com Sucesso´);
imgFoto.Picture:= Nil;
btnSalvar.Enabled:= false;
btnCarregar.Enabled:= true;
end
else
begin
ShowMessage(´Caro usuário não foi possível encontrar´+#13+
´A pasta onde ira ficar as fotos´);
ImgFoto.Picture:= Nil;
btnSalvar.Enabled:= false;
btnCarregar.Enabled:= true;
end;
end;
Só que é criado um aquivo jpg em branco onde estou errando :oops:
Gostei + 0
13/02/2005
Beppe
function PadronizaTamanho(Imagem: TGraphic; W, H: Integer; Tipo: TGraphicClass = nil): TGraphic; var B: TBitmap; begin B := TBitmap.Create; try B.Width := W; B.Height := H; B.Canvas.StretchDraw(Rect(0, 0, W, H), Imagem); if Tipo = nil then Result := TGraphic(Imagem.ClassType.Create) else Result := Tipo.Create; Result.Assign(B); finally B.Free; end; end;
Exemplo de uso:
procedure TForm1.Button1Click(Sender: TObject); var Nova: TGraphic; begin Nova := PadronizaTamanho(Image1.Picture.Graphic, 80, 80, TJPEGImage); try Image2.Picture.Graphic := Nova; finally Nova.Free; end; end;
Eu mudei a lógica da rotina, com um parâmetro a mais. Eu vi que vc usa a propriedade Bitmap, o que significa que a imagem de origem não é um BMP. Se a imagem é JPEG, usar Bitmap apaga a imagem original :!:
O último parâmetro é o tipo da imagem que deseja criar. Se deixar nil ou não colocar nada, será criada uma imagem do mesmo tipo da original.
É necessário ter Jpeg e Graphics na uses.
Gostei + 0
13/02/2005
Mssilva
Marcos
Gostei + 0
13/02/2005
Beppe
Quero apenas retificar uma coisa. Eu disse:
´Eu vi que vc usa a propriedade Bitmap, o que significa que a imagem de origem não é um BMP.´
mas queria dizer:
´Eu vi que vc usa a propriedade Bitmap, o que significa que a imagem de origem É um BMP.´
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)