AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi PNG-Bild aus BLOB-Feld in Image laden
Thema durchsuchen
Ansicht
Themen-Optionen

PNG-Bild aus BLOB-Feld in Image laden

Ein Thema von scrat1979 · begonnen am 20. Dez 2010 · letzter Beitrag vom 15. Nov 2020
Antwort Antwort
Laaeris

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

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

  Alt 15. Nov 2020, 16:10
Kann es sein, dass das Blobfeld schlicht und einfach zu klein für das Bild ist?

65536 ist halt der höchste Wert, den man mit 'nem Word darstellen kann und der Größe eines Blobs bei MySQL entspricht. (https://www.tutorialspoint.com/What-...olumn-in-MySQL)

Wenn man größere Bilder speichern will, sollte man einen entsprechend größeren Blobtyp nehmen.
Und das war der entscheidende Hinweis, alles andere war schon komplett korrekt, also das Laden und Speichern. Aber ich musste das Datenbankfeld von BLOB in der MySQLDatenbank auf MEDIUMBLOB stellen und schon ging es (TINYBLOB Up to 255 bytes; BLOB Up to 64 Kb; MEDIUMBLOB Up to 16 Mb, LONGBLOB Up to 4 Gb).

Speichern also mit:
Delphi-Quellcode:
var
  BildSpeicherQuery : TMyQuery;
  ImageStream : TMemoryStream;
begin (*TForm_Hauptuebersicht.Button_WappenbildvonDateiinDatenbankClick*)
  if OpenDialog_NamenHauptform.Execute then
  begin (*Opendialog*)
    ImageStream := TMemoryStream.Create;
    try
      BildSpeicherQuery := TMyQuery.Create(BBM_Datamodule);
      try
        BildSpeicherQuery.Connection := BBM_Datamodule.BMMConn;
        BildSpeicherQuery.SQL.Text := 'Update BBM_Verein set Wappenbild=:BILD Where idVerein=:ID';

        ImageStream.LoadFromFile(OpenDialog_NamenHauptform.FileName);
        ImageStream.Position := 0; // vorsichtshalber
        BildSpeicherQuery.Params[0].SetBlobData(ImageStream.Memory, ImageStream.Size);
        BildSpeicherQuery.Params[1].Value := Aktiv_Verein_ID;
        BildSpeicherQuery.ExecSQL;
      finally
        BildSpeicherQuery.Free;
      end; (*of QueryCreate*)
    finally
      ImageStream.Free;
    end; (*of Streamload*)
  end; (*Opendialog*)
end; (*of TForm_Hauptuebersicht.Button_WappenbildvonDateiinDatenbankClick*)
Laden mit:
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*)
Vielen Dank an Euch und bleibt gesund!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz