Entwickler-Ecke
Datenbanken - Bilder in Datenbanken
Flash_68 - Fr 24.02.12 16:07
Titel: Bilder in Datenbanken
Hallo zusammen,
ich möchte gern Bilder in Datenbanken einfügen und auslesen bzw. mir wieder anzeigen lassen. Habe dazu hier auch schon Themen gefunden, allerdings beziehen sich diese auf Paradox oder andere Datenbanken.
Könnte mir dazu jemand ein paar Tips geben?
Gruß
Flash
Flash_68 - Fr 24.02.12 16:58
Es wurde nur geschrieben das ich auf die Pfade der Bilder in die DB einpflegen soll. Mehr wurde nicht geschrieben, wie ich die Bilder selbst einfüge oder auslese hat keiner geschrieben oder ob es das selbe ist wie bei den anderen datenbanken.
bummi - Fr 24.02.12 17:19
Wenn Du keine Visuelle Komponente wie DBImage verwenden willst am Einfachsten per
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| Var bmp:TBitMap; begin bmp:=TBitMap.Create; try bmp.LoadFromFile('C:\Bilder\MeinBild.BMP'); Bilder.Edit; Bilderbild.assign(bmp); Bilder.Post; finally bmp.Free; end; end; |
mit DBImage-Komponente
Delphi-Quelltext
1: 2: 3: 4: 5:
| begin Bilder.Append; DBImage1.Picture.Bitmap.LoadFromFile('C:\Bilder1\4KEYBUT.BMP'); Bilder.Post; end; |
im Beispiel
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| CREATE TABLE [dbo].[Bilder]( [id] [int] IDENTITY(1,1) NOT NULL, [Bild] [varbinary](max) NULL, CONSTRAINT [PK_Bilder] PRIMARY KEY CLUSTERED ( [id] ASC ) ON [PRIMARY] ) ON [PRIMARY] |
Wenn Du JPG's verwenden willst muss Du Streams verwenden.
Hake gerne nach wenn obiges nicht ausreicht ...
Flash_68 - Mo 27.02.12 13:03
Danke erstmal für die Hilfe.
Ich werde wohl überwiegend JPG verwenden und es wäre nett wenn du mir da nochmal helfen könntest.
Gruß
Flash
bummi - Mo 27.02.12 13:25
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| uses LoadSaveImageBlobs,pngimage; {$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject); var p:TPicture; begin p := TPicture.Create; try p.LoadFromFile('C:\Icons\IconCollection\ix_ap_all\128x128\shadow\about.png'); Bilder.Edit; SavePicture2Blob(BilderBild,p); finally p.Free; end;
end;
procedure TForm2.Button2Click(Sender: TObject); begin LoadPictureFromBlob(IMage1.Picture,BilderBild); end; |
Flash_68 - Mo 27.02.12 13:54
das loadSaveImageBlobs findet er bei bei mir nicht, ist das standartmäßig dabei?
bummi - Mo 27.02.12 14:03
Im Anhang meines letzten Postings ....
Flash_68 - Mo 27.02.12 14:08
das hatte ich über sehen, danke.
Moderiert von Narses: Beiträge zusammengefasst
und für was steht der Eintrag BilderBild?
bummi - Mo 27.02.12 14:18
Ein Adodataset mit dem SQL 'Select ID,Bild from Bilder' Bild persistent gemacht
DeinDataset.FieldByName('Bild') .....
Flash_68 - Mo 27.02.12 14:30
Jetzt bekomme ich die Fehlermeldung Inkompatible Typen TBlobfield und TField für die Zeile mit dem SavePicture2Blob.
bummi - Mo 27.02.12 15:51
was für ein Feld hast Du den verwendet? varbinary ?
Wenn Du es nicht persistent gemacht hast BilderBild sondern über Bilder.FieldByName('Bild') zugreifst mußt Du es Casten z.B.
Delphi-Quelltext
1:
| SavePicture2Blob(TBlobField(Bilder.FieldByName('Bild')),p); |
Flash_68 - Mo 27.02.12 16:03
Das hat gut geklappt mit dem casten, danke.
Kannst du mir das mit dem persistent machen mal erklären?
bummi - Mo 27.02.12 16:04
Doppelklick auf dem Dataset, rechter Mausklick Felder hinzufügen ....
Flash_68 - Mo 27.02.12 16:11
In der Liste ist mein Feld vorhanden, habe alle felder da eingetragen die ich benötige.
bummi - Mo 27.02.12 16:43
Dann kannst Du sie auch direkt verwenden ohne über FieldByName und Cast zu gehen ...
Flash_68 - Mo 27.02.12 16:59
Kann es daran liegen das es in einem Datenmodul liegt?
bummi - Mo 27.02.12 17:06
Wo es liegt ist wurscht, was für ein Fehler bekommst Du denn und was für ein FeldTyp ist es (wenn Du es anklickts im Objektinspektor oder in den Deklarationen in Deiner Pas).
Flash_68 - Di 28.02.12 10:12
Ich habs jetzt wie es ohne den cast geht:
SavePicture2Blob(dm_filme.ADS_FilmeBild,p);
Ich mußte das Datenmodul mit angeben.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!