Lucrul cu imagini

Lucrul cu imagini * .jpg în Delphi / MS SQL

Instalați componenta de a lucra cu DBJPEGImage Jpeg-fișiere. Am încercat să încărcați imagini la baza de date (MS SQL 7.0), dar nu se întâmplă nimic. Metoda LoadFromFile le primește de la un fișier, dar nu pot salva (câmp de tip imagine). Un DBLoadFromFile, deși el a scris în componentele readme, chiar și imaginile nu sunt de încărcare.
Wizards ajuta rezolve problema. Sau sfătui în cazul în care puteți citi despre el.

Acest lucru este mine, de asemenea, într-un forum au găsit, eu aduc nici o schimbare. Ar trebui să funcționeze.

var Bm: TMemoryStream;
Jp: TJpegImage;
începe
Table1.Edit;
Jp: = TJpegImage.Create;
Jp.Assign (Image1.Picture.Bitmap); // pune imaginea în clasa TJpegImage;
Bm: = TMemoryStream.Create;
Jp.SaveToStream (Bm); // Salvare Jpeg în flux
Bm.Seek (0,0);
Dm.Table1PHOTO.LoadFromStream (Bm); // Load Jpeg în câmpul peste fluxul
Bm.Free;
Jp.Free;
Table1.Post;
se încheie;

Cum încărcarea? Care motor de baze de date este folosit (în BDE, există unele probleme cu extragerea imaginilor din baza de date)?

Am făcut prin proceduri stocate. Ie există, de exemplu, o astfel de procedură:

crea PROCEDURA dbo.spIMG_Add
imagine @img_Data,
ieșire @img_id int
AS
începe
inserați în dbo.Images (img_Data)
# 032; valori (@img_Data)
selectați @img_id = @@ identitate
capăt

Procedura următoare „împinge“ imaginea în baza de date. Aici, pentru a avea acces la datele utilizate SDAC. Cred că este rescris la o altă problemă a motorului nu va fi.


Procedura TForm1.Button1Click (Expeditor: TObject);
începe
# 032; dacă OpenPictureDialog.Execute atunci
# 032; începe
# 032; # 032; cu spIMG_Add do
# 032; # 032; începe
# 032; # 032; # 032; ParamByName ( "img_Data") .LoadFromFile (OpenPictureDialog.FileName, ftBlob);
# 032; # 032; # 032; Connection.StartTransaction;
# 032; # 032; # 032; încercați
# 032; # 032; # 032; # 032; ExecProc;
# 032; # 032; # 032; # 032; connection.Commit;
# 032; # 032; # 032; cu excepția
# 032; # 032; # 032; # 032; connection.Rollback;
# 032; # 032; # 032; end;
# 032; # 032; end;
# 032; end;
se încheie;

Vă mulțumesc, prieteni!
Se pare că se maturizează o altă problemă: cum să afișeze imaginea din baza de date. Verificați masa - ceva în domeniu este salvat (prin metoda propusă Lola, pentru HP pur și simplu nu a Vuk primi, dar încercați mai târziu este necesar), și chiar și acest lucru este necesar. Dar, pe componenta în formă de nimic. A încercat TDBJPEGImage.LoadImage, de asemenea, a propus în componentele readme - acesta vvobsche programul tace. Explicați ignorant, de ce, și cum se face corect?

V-ați uitat dacă în câmpul exact o imagine normală?

Dacă puteți vedea imaginea în domeniul tabelului în MS SQL, eu, din păcate, nu știu cum. Tocmai am constatat că există ceva scris pe lungimea câmpului.

Nu cred că este o astfel de întrebare dificilă pentru Masters, sau toate maeștrilor deja în vacanță, o pauză de la place de mine.
Deci, într-un domeniu pe care un tabel (?) Se menține (se poate vedea de-a lungul lungimii câmpului). Dar cum ajunge în forma potrivită?

Ia în DBMultiFmtImage cămară și nu uitați să adăugați utilizează JPEG.

la Active
După instalarea DBMultiFmtImage pentru a forma la Delphi mine cu proiectul meu la start se blochează imediat, fără nici un mesaj. A trebuit să se retragă.

Scuze, am fost ocupat. Încercați acest lucru.

Bm: = Table1.CreateBlobStream (Table1.FieldByName ( "Photo"), bmRead);
Jp: = TJpegimage.Create;
Jp.LoadFromStream (Bm);
Image1.Picture.Assign (Jp);
Bm.Free;
Jp.Free;

Dacă nu, uita-te în „Regatul Delphi“. Ei place mult dezbătut la momentul respectiv.

Lola, vă mulțumesc foarte mult!
În general, la locul de muncă, dar cu unele erori - după descărcarea imaginilor pentru a forma un set de încuietori și de navigare nu este posibil până când anulati. Sper că, cu timpul și dau seama.
Acum voi săpa că toate acestea pot fi trimise la imprimantă. (Raport de monitorizare nu am luat în proiect).
În general, atunci, ar fi frumos să organizeze undeva pe site-ul, probabil, într-un dulap, o secțiune unde pliat gata pentru soluții de lucru specifice ale unor probleme relativ complexe (cum ar fi acest lucru). Întrebări frecvente este pur și simplu o întrebare, fără pene, cu aceleași răspunsuri, de multe ori departe de beton. Atunci ar fi mai ușor pentru începători să stăpânească subiect, și repetitive, probleme, uneori, nu destul de corecte cu răspunsuri chiar mai incorecte în cadrul conferinței va deveni mai mici.
Încă o dată, vă mulțumesc foarte mult!

Bună ziua tuturor. De fapt, în cazul în care pentru a obține DBJPEGImage?

Memorie: 0,74 MB
Timpul: 0,071 c