PDA

View Full Version : ذخیره عکس jpegدر sql server



daffy_duck376
جمعه 22 خرداد 1388, 10:49 صبح
سلام دوستان . من برای اینکه یه jpeg رو در بانک sql ذخیره کنم روشهای زیادی رو تست کردم ولی هر کدوم یه error مخصوص به خودشون بود. یه روشی از یه سایت پیدا کردم که تقریبا جواب میده .
اونو خدمت دوستان میگذارم که اگه دوستان مشکل مشابه داشتن مثل من الاف نشن
اول در قسمت طراحی بانک نوع عکس رو image بگیرید.
در سورس برنامه uses ، jpej رو اضافه کنید .
کلاسهای استفاده شده در برنامه اینها هستند :

type
TfrmMain = class(TForm)
GroupBox1: TGroupBox;
Label3: TLabel;
dbDemos: TABSDatabase;
tPhotoAlbum: tadoTable;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
btSaveImage: TButton;
odBlob: TOpenDialog;
sdBlob: TSaveDialog;
btLoadImage: TButton;
GroupBox2: TGroupBox;
Photo: TImage;
برای ذخیره از کد زیر استفاده کنید

var
FileStream: TFileStream;
BlobStream: TStream;
begin
if (odBlob.Execute) then
begin
tPhotoAlbum.Edit;
try
BlobStream := tPhotoAlbum.CreateBlobStream(tPhotoAlbum.FieldByNa me('Photo'),bmWrite);
FileStream := TFileStream.Create(odBlob.FileName,fmOpenRead or fmShareDenyNone);
BlobStream.CopyFrom(FileStream,FileStream.Size);
FileStream.Free;
BlobStream.Free;
tPhotoAlbum.Post;
tPhotoAlbumAfterScroll(tPhotoAlbum);
except
tPhotoAlbum.Cancel;
end;
end;
برای نشان دادن عکس نمی توان از dbimage استفاده کرد باید از image استفاده کنید
برای نشان دادن داریم :

var
JpegImage: TJPEGImage;
BlobStream: TStream;
begin
if (not tPhotoAlbum.FieldByName('Photo').IsNull) then
begin
BlobStream := tPhotoAlbum.CreateBlobStream(tPhotoAlbum.FieldByNa me('Photo'),bmRead);
JpegImage := TJPEGImage.Create;
try
JpegImage.LoadFromStream(BlobStream);
Photo.Picture.Assign(JpegImage);
Photo.Visible := True;
finally
JpegImage.Free;
BlobStream.Free;
end;
end
else
Photo.Visible := False;
end;

daffy_duck376
جمعه 22 خرداد 1388, 11:09 صبح
منبع یادم رفت
http://www.componentace.com/blob-jpeg-field-delphi.htm

daffy_duck376
جمعه 22 خرداد 1388, 12:10 عصر
اطلاعات بیشتر در مورد یونیت jpeg
http://www.hamslab.com/lab/delphi/jpeg/jpeg_del.html