Como salvar JPEG no Banco de dados, alguem sabe?
Olá pessoal eu configo sarvar arquivo BMP no banco de dados Firebird 1.0 , mas como o arquivo JPEG não consigo salvar.
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....
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
Curtidas 0
Respostas
Massuda
16/04/2007
Se sua rotina de gravação/leitura usa o TPicture, inclua no uses da sua unit a unit ´jpeg´.
GOSTEI 0
Max2006
16/04/2007
Se sua rotina de gravação/leitura usa o TPicture, inclua no uses da sua unit a unit ´jpeg´.
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
Max2006
16/04/2007
Estou usando isto
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;
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
Antonio Pereira
16/04/2007
Olá,
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;
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
Max2006
16/04/2007
Pessoal eu ainda estou perdido em imágem do tipo JPG.
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?
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
Antonio Pereira
16/04/2007
o DBIMAGEM não carrega os arquivos JPG (só não sei o proque). Você deve usar o image. Utilizei este código para resolver:
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;
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