Fórum Como salvar JPEG no Banco de dados, alguem sabe? #340441

16/04/2007

0

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....


Max2006

Max2006

Responder

Posts

16/04/2007

Massuda

Se sua rotina de gravação/leitura usa o TPicture, inclua no uses da sua unit a unit ´jpeg´.


Responder

Gostei + 0

16/04/2007

Max2006

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.


Responder

Gostei + 0

16/04/2007

Max2006

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;


Responder

Gostei + 0

18/04/2007

Antonio Pereira

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;


Responder

Gostei + 0

19/04/2007

Max2006

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?


Responder

Gostei + 0

20/04/2007

Antonio Pereira

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;


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar