Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    92

    [Delphi] Inserire e visualizzare immagini

    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;

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,302
    Leggere tutto il codice e interpretarlo, vista la sua relativa "voluminosità" e l'assenza di indentazione è un po' complesso.

    E' possibile che tu abbia scelto un file JPEG salvato con una compressione ed un formato particolare che impedisca alla classe TJPEGImage di caricare l'immagine correttamente.

    Io proverei a rigenerare l'immagine o fare prove con altre per verificare che non sia un problema di formato piuttosto che di errore nella stesura del codice.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    92
    Proverò a verificare!
    è una possibilità che non avevo considerato!:quipy:
    Grazie !

    Kate71

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.