Einzelnen Beitrag anzeigen

Laaeris

Registriert seit: 10. Dez 2011
24 Beiträge
 
#11

AW: PNG-Bild aus BLOB-Feld in Image laden

  Alt 9. Sep 2020, 14:35
...erstmal supervielen Dank für die fixen Antworten. Ich vermute das Laden funktioniert nun, aber ich bekomme einen CRC-Fehler beim Laden, also vermute ich ich mache das Speichern komplett falsch. Ich habe dazu keinen Codeschnipsel gefunden, aber vielleicht drückt mal jemand meine Nase (ruhig doll drücken) auf einen Thread mit einem einfachen Code?

Laden:
Delphi-Quellcode:
var
  PNG_Bild : TPNGImage;
  BildLadenQuery : TMyQuery;
  BlobStream : TStream;
begin (*of Button_WappenbildvonDBinImageClick*)
  PNG_Bild:=TPNGImage.Create;
  BildLadenQuery:=TMyQuery.Create(BBM_Datamodule);
  try
    BildLadenQuery.Connection:=BBM_Datamodule.BMMConn;
    BildLadenQuery.SQL.Text := 'Select Wappenbild from BBM_Verein where idVerein=:ID';
    BildLadenQuery.Params[0].Value := Aktiv_Verein_ID;
    BildLadenQuery.ExecSQL;

    BlobStream := BildLadenQuery.CreateBlobStream(BildLadenQuery.FieldByName('Wappenbild'),bmRead);
    PNG_Bild.LoadFromStream(BlobStream);
    Image_Wappen1.Picture.Assign(PNG_Bild);
  finally
    PNG_Bild.Free;
    BildLadenQuery.Free;
  end; (*of finally*)
Speichern:
Delphi-Quellcode:
var
  PictureFile : TFileName;
  PNG_Bild : TPNGImage;
  BildSpeicherQuery : TMyQuery;
  BlobStream : TStream;
begin
  PNG_Bild:=TPNGImage.Create;
  BildSpeicherQuery:=TMyQuery.Create(BBM_Datamodule);
  try
    OpenDialog_NamenHauptform.Execute;
    FileExists(OpenDialog_NamenHauptform.FileName);
    PNG_Bild.LoadFromFile(OpenDialog_NamenHauptform.FileName);

    BildSpeicherQuery.Connection:=BBM_Datamodule.BMMConn;
    BildSpeicherQuery.SQL.Text := 'Update BBM_Verein set Wappenbild=:BILD Where idVerein=:ID';
    BildSpeicherQuery.Params[0].Assign(PNG_Bild);
    BildSpeicherQuery.Params[1].Value := Aktiv_Verein_ID;
    //BildSpeicherQuery.Parameters[1].Assign(itPNG);
    BildSpeicherQuery.ExecSQL;

  finally
    PNG_Bild.Free;
    BildSpeicherQuery.Free;
  end; (*of finally*)
EDIT: Habe gerade mit der Workbench das PNG-File direkt in die DB geladen. Ob man das so naiv machen kann weiss ich nicht. Effekt: BLOB-Byteanzeige ist bei 147 KB (das passt), ladbar ist es nicht (CRC-Fehler wie zuvor).

Liebe Grüße,

David
Miniaturansicht angehängter Grafiken
crc_png_fehler.jpg   bild.jpg  

Geändert von Laaeris ( 9. Sep 2020 um 14:41 Uhr)
  Mit Zitat antworten Zitat