Salve !
ho un problema con l'inserimento e la visualizzazione delle immagini.
Parte di questo codice l'ho trovato su internet,
ma mi consente di visualizzare solo immagini jpeg.
Io vorrei poter inserire nel campo blob della mia
tabella anche immagini bmp e gif.
Ma non so come fare!
Questo l'errore che mi da in fase di visualizazzione ...
ma a volte si generano errori anche nel salvataggio.
Invio il mio codice in modo da poter dare un'idea un po' più chiara
di quello che sto dicendo!
Grazie!!
Kate71
Delphi 7, MySQL
---------------------------------------------------------------------------------------------
Errore
---------------------------------------------------------------------------------------------
Project xxx.exe raised exception class EJPEG with message 'JPEG error #42'.
Process stopped. Use Step or Run to continue.
---------------------------------------------------------------------------------------------
CODICE
uses
jpeg;
---------------------------------------------------------------------------------------------
inserisce l'immagine nella tabella - campo blob 'IMG'
---------------------------------------------------------------------------------------------
procedure TForm1.sbtInsImgClick(Sender: TObject);
var
MyBlobStream : TBlobStream; // Streams
MyJPegStream : TMemoryStream;
begin
// seleziona e slva immagine
dm.tabImage.Active := True;
dm.tabImage.Insert;
if opendialog1.Execute then // If file selected (only JPeg-Files)
begin
if dm.tabImage.FieldByName('IMG').IsBlob then // this line can deleted
begin
MyJPegStream := TMemoryStream.Create; // Handle JPegFile
JPegImage.LoadFromFile(opendialog1.filename);
JPegImage.SaveToStream(MyJPegStream);
// Prepare Blob
MyBlobStream :=
TBlobStream.Create(TBlobField(dm.tabImage.FieldByN ame('IMG')),bmReadWrite);
MyBlobStream.CopyFrom(MyJPegStream,0); // Copy JPeg into BlobField
Image1.Picture.Assign(JPegImage); // Display
jpimg := True;
MyJPegStream.Free; //Free all
MyBlobStream.Free;
end;
end
else
jpimg := False;
end;
---------------------------------------------------------------------------------------------
visualizza immagine in una nuova form
---------------------------------------------------------------------------------------------
procedure TForm2.Button12Click(Sender: TObject);
var
MyBlobStream : TBlobStream;
JpegImage :TJPegImage;
sql_ImgShow :String;
qry_ImgShow : TQuery;
begin
sql_ImgShow := 'SELECT IMG FROM image WHERE LID = '+ lidimg;
qry_ImgShow := TQuery.Create(nil);
with qry_ImgShow do begin
DatabaseName := dm.SkarDatabase.DatabaseName ;
Close;
SQL.Clear;
SQL.Text := sql_ImgShow;
Active := True;
end;
Application.CreateForm(TForm3, Form3);
try
JpegImage := TJPegImage.Create;
if (qry_ImgShow.FieldByName('IMG').IsBlob) and
(not(qry_ImgShow.FieldByName('IMG').IsNull)) then
begin
// Prepare Streams
MyBlobStream :=
TBlobStream.Create(TBlobField(qry_ImgShow.FieldByN ame('IMG')),bmRead);
JPegImage.LoadFromStream(MyBlobStream);
fmImgDef.Image1.Picture.Assign(JPegImage);
fmImgDef.ShowModal;
MyBlobStream.Free; // Free Stream
end
else begin
Form3.Image1.Picture := Nil; // No JPeg saved disable display
ShowMessage('nessuna immagine disponibile.');
Form3.Free;
end;
if Form3.ModalResult = mrOK then
begin
Form3.Free;
end;
except
on E: Exception do
begin
Beep;
ShowMessage('Errore su apertura Form3');
end;
end;
end;