Fórum Como salvar JPEG no Banco de dados, alguem sabe? #340441
16/04/2007
0
Da a mensagem Project projeto1.exe exception class EInvalidGrahic whith message ´Unknown picture file extension (.jpg)´. Process stopped. Use Setp or Run to continue.
O campo é de nome Fotos
Tipo BLOB
Sub Tipo: 0
Segment Size: 80
Char Set ISO8859_1
Alguem pode me ajudar....
Max2006
Curtir tópico
+ 0Posts
16/04/2007
Massuda
Gostei + 0
16/04/2007
Max2006
Não entendi a TPicture, coloquei a jpeg na uses e consegui colocar no componente DBImage, mas na hora de gravar, da a mensagem project projeto.exe raised exception class EIBclientErro with message ´Unsupported feature´. Process stopped. Usep or Run to continue.
Gostei + 0
16/04/2007
Max2006
Table1.edit; ou Table1.Insert;
if OpenDialog1.Execute Then
Begin
//DBImage1.CleanupInstance;
DBImage1.Picture.LoadFromFile(OpenDialog1.FileName);
End;
Depois da mensagem aparecer eu clico no botão gravar.
Begin
Table1.post;
End;
Gostei + 0
18/04/2007
Antonio Pereira
Hoje mesmo estou construindo um aplicação e usei isto:
Firebird:
CREATE DOMAIN ´dImagemJPG´ AS
BLOB SUB_TYPE -2;
Delphi:
procedure TfrmPaciente.CapturardeARQUVI1Click(Sender: TObject);
var ExtArq,NomeFoto:String;
FileStream : TFileStream;
BlobStream : TStream;
begin
OpenPictureDialog1.Execute;
if OpenPictureDialog1.FileName<>´´ then
begin
DirNomeFoto := OpenPictureDialog1.FileName;
ExtArq:=uppercase(Copy(ExtractFileName(DirNomeFoto),Length(ExtractFileName(DirNomeFoto))-2 ,Length(ExtractFileName(DirNomeFoto))));
if ExtArq=´BMP´ then
DirNomeFoto:=bmptojpg(DirNomeFoto,´´);
FileStream:=TFileStream.Create(DirNomeFoto,fmOpenRead);
BlobStream:=DMDADOS.adoPaciente.CreateBlobStream(dmdados.adoPacienteCCFOTO,bmWrite);
try
BlobStream.CopyFrom(FileStream,FileStream.Size);
finally
FileStream.Free;
BlobStream.Free;
end;
end;
end;
******************************************
Função para converter BMP em JPG
******************************************
Function bmptojpg(ACaminhoFoto, ACaminhoSalvar: string):String;
var
cjBmp: TBitmap;
cjJpg: TJpegImage;
strNomeSemExtensao: string;
AFoto: TImage;
begin
AFoto:=TImage.Create(dmdados);
AFoto.Picture.Bitmap.LoadFromFile(ACaminhoFoto);
strNomeSemExtensao := ExtractFilePath(ACaminhoFoto) +
Copy(ExtractFileName(ACaminhoFoto),1, Length(ExtractFileName(ACaminhoFoto))-4);
cjJpg := TJPegImage.Create;
cjBmp := TBitmap.Create;
cjBmp.Assign(AFoto.Picture.Bitmap);
cjJpg.Assign(cjBMP);
cjJpg.SaveToFile(strNomeSemExtensao+´.jpg´);
cjJpg.Free;
cjBmp.Free;
AFoto.Free;
bmptojpg:=strNomeSemExtensao+´.jpg´;
end;
Gostei + 0
19/04/2007
Max2006
Declarei a uses jpeg na unit.
Coloquei este código no botão.
O meu códio é este
Table1.edit; ou Table1.Insert;
if OpenDialog1.Execute Then
Begin
//DBImage1.CleanupInstance;
DBImage1.Picture.LoadFromFile(OpenDialog1.FileName);
End;
Consigo gravar arquivo do tipo BMP e JPG, com uma diferença entre eles, no arquivo do tipo BMP eu salvo e o arquivo não some, no arquivo JPG eu salvo e o arquivo some, já verifiquei no banco de dados se o arquivo estava lá e ele está.
Os arquivos do tipo BMP salvos no banco de dados aparecem normalmente mas os arquivos JPG não aparecem, porém eles estão lá gravados.
Alguem sabe oque pode estar acontecendo?
Gostei + 0
20/04/2007
Antonio Pereira
procedure TdmDados.dsPacienteDataChange(Sender: TObject; Field: TField);
var
BlobStream : TStream;
JPEGImage : TJPEGImage;
begin
if frmPaciente<> nil then
begin
if dmdados.adoPacienteCCFOTO.BlobSize<>0 then
begin
BlobStream:=dmdados.adoPaciente.CreateBlobStream(dmdados.adoPacienteCCFOTO,bmRead);
JPEGImage:= TJPEGImage.Create;
try
JPEGImage.LoadFromStream(BlobStream);
frmPaciente.imgFotoPac1.Picture.Assign(JPEGImage);
frmPaciente.imgFotoPac2.Picture.Assign(JPEGImage);
finally
BlobStream.Free;
JPEGImage.Free;
end;
end
else
begin
frmPaciente.imgFotoPac1.Picture:=nil;
frmPaciente.imgFotoPac2.Picture:=nil;
end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)