Olá, tenho pesquisado mas por se tratar de um tópico o qual estou juntando 2 combinações de programação que encontrei seja mais difícil uma resposta exata. O caso é que tenho um form com cadastro e nele posso adicionar a foto do cidadão. Quero gravar e depois visualizá-la de volta no form ou gerar o relatório com ela e imprimi-lá.
A diferença é que quando clico no botão selecionar foto eu vou fazer uma verificação da extensão da minha img. Se ela for ".jpg" eu simplesmente quero gravá-la no BD.
Caso seja qualquer outra extensão eu quero convertê-la antes de gravar.
Botão Selecionar foto
-----------------
var
ImageJPG: TJPEGImage;
BlobStream: TStream;
FileStream: TFileStream;
begin
if OpenPictureDialog1.Execute then
if (ExtractFileExt(OpenPictureDialog1.FileName) = '.jpg') or (ExtractFileExt(OpenPictureDialog1.FileName) = '.jpeg') then
begin
FileStream := TFileStream.Create(OpenPictureDialog1.FileName,
fmOpenRead or fmShareDenyWrite);
BlobStream := dmCadastro.cdsCadAlu.CreateBlobStream(dmCadastro.cdsCadAluALU_FOTO,bmWrite);
ImgFoto.Picture.LoadFromFile(OpenPictureDialog1.FileName);
edtCaminhoImg.Text := OpenPictureDialog1.FileName;
try
BlobStream.CopyFrom(FileStream,FileStream.Size);
finally
FileStream.Free;
BlobStream.Free;
end;
end else
begin
ImageJPG := TJPEGImage.Create;
try
if ConvertImage(OpenPictureDialog1.FileName, ImageJPG) then
begin
ImgFoto.Picture.Assign(ImageJPG);
dmCadastro.cdsCadAluALU_FOTO.Assign(ImageJPG);
edtCaminhoImg.Text := OpenPictureDialog1.FileName;
end;
finally
ImageJPG.Free;
end;
end;
Função usada pra converter imagem
---------------
function TfrmCadAlu.ConvertImage(SrcName: string;
DstPic: TGraphic): Boolean;
var
Picture: TPicture;
ImageBMP: TBitmap;
begin
Result := False;
Picture := TPicture.Create;
try
Picture.LoadFromFile(SrcName);
ImageBMP := TBitmap.Create;
try
ImageBMP.Width := Picture.Width;
ImageBMP.Height := Picture.Height;
ImageBMP.Canvas.Draw(0, 0, Picture.Graphic);
DstPic.Assign(ImageBMP);
Result := True;
finally
ImageBMP.Free;
end;
finally
Picture.Free;
end;
end;
Não estou muito certo sobre o funcionamento dela e por isso não estou muito confiante, por isso a dúvida. Como devo fazer pra gravar sempre JPG no banco? Resolvi assim pra tentar não deixar o banco muito grande
Pergunta
DiabloX3
Olá, tenho pesquisado mas por se tratar de um tópico o qual estou juntando 2 combinações de programação que encontrei seja mais difícil uma resposta exata. O caso é que tenho um form com cadastro e nele posso adicionar a foto do cidadão. Quero gravar e depois visualizá-la de volta no form ou gerar o relatório com ela e imprimi-lá.
A diferença é que quando clico no botão selecionar foto eu vou fazer uma verificação da extensão da minha img. Se ela for ".jpg" eu simplesmente quero gravá-la no BD.
Caso seja qualquer outra extensão eu quero convertê-la antes de gravar.
Estou usando Delphi 7, Firebird 2.5, Campos Blob sub_type 0, clientdataset e dbexpress
Não estou muito certo sobre o funcionamento dela e por isso não estou muito confiante, por isso a dúvida. Como devo fazer pra gravar sempre JPG no banco? Resolvi assim pra tentar não deixar o banco muito grande
Abraço
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.