Ich schreibe mir gerade ein kleines Lagerverwaltungsprogramm und möchte bei den Artikel auch Bildchen in der Datenbank abspeichern. Dazu sollte das Bild im Hintergrund in PNG Format in die Datenbank.
Anbei der Code für Einfügen aus Zwischenablage:
Code: Alles auswählen
procedure TfrmMain.mnEinfuegenClipbrdClick(Sender: TObject);
Var st: TMemoryStream;
png: TPortableNetworkGraphic;
bmp: TPicture;
begin
If Not Clipboard.HasPictureFormat Then Exit; // Kein Bild
If qBauteil.EOF And qBauteil.BOF Then Exit;
If qFoto.EOF And qFoto.BOF Then // Neuer Datensatz in der Foto-Tabelle nötig
Begin
qFoto.Append;
qFotoTabelle.AsString := 'bauteil';
qFotoBildTyp.AsString := 'BMP';
qFoto.Post;
If Not(qBauteil.State In [dsEdit, dsInsert]) Then
qBauteil.Edit;
qBauteilFoto_ID.AsInteger := qFotoID.AsInteger;
qBauteil.Post;
end;
st := TMemoryStream.Create;
If Clipboard.GetFormat(Clipboard.FindPictureFormatID, st) Then
Begin
png := TPortableNetworkGraphic.Create; // Wandeln Bitmap in PNG Format
bmp := TPicture.Create;
st.Position := 0;
bmp.LoadFromStream(st);
png.Assign(bmp.Bitmap);
st.Clear;
png.SaveToStream(st);
st.Position := 0;
qFoto.Edit;
stBar.SimpleText := 'Bildgroese: ' + IntToStr(st.Size) + ' Byte';
DBImgBauteil.Picture.LoadFromStream(st);
qFotoBildTyp.AsString := 'PNG';
qFotoBezeichnung.AsString := qBauteilBezeichnung.AsString;
qFoto.Post;
bmp.Free;
png.Free;
end;
st.Free;
end;
Aber zu meinem Problem:
- Ich betätige das Einfügen (in der Zwischenablage ist das Bild)
- Bild ist im TDBImage korrekt sichtbar
- Datensatz neu öffnen
- Bild wird im TDBImage nur Teilweise angezeigt. (Siehe Bild)
Meine Vermutung: Die Datenbankverbindung empfängt das Bild, aber nicht alle Daten.
Wie kann ich das beheben? Ich suche jetzt schon seit einigen Stunden, auch habe ich ohne die Wandlung PNG das gleiche Problem. Mir scheint so, als wenn das Bild mehr als 32KB (oder 64KB) hat, dass es dann zu diesem Problem kommt.
Wenn ich das Bild als PNG mit einem Zeichenprogramm ablege, dann hat es 12KB auf der Festplatte, aber in der Datenbank steht (phpMyAdmin) 64KB. Also irgendwie klappt meine PNG-Wandlung auch nicht.
Danke im Voraus für eure Hilfe.
Grüße Markus