ورود

View Full Version : خواندن رکورد Image از DataBase



shaghayegh_6113
چهارشنبه 16 اسفند 1385, 15:22 عصر
سلام
من توی یه سری عکس Jpeg رو با کد زیر به Bmp تبدیل کردم و در DataBase ذخیره کردم

procedure JPEGtoBMP(const FileName: TFileName);
var
jpeg: TJPEGImage;
bmp: TBitmap;
begin
jpeg := TJPEGImage.Create;
try
jpeg.CompressionQuality := 100; {Default Value}
jpeg.LoadFromFile(FileName);
bmp := TBitmap.Create;
try
bmp.Assign(jpeg);
bmp.SaveTofile(ChangeFileExt(FileName, '.bmp'));
finally
bmp.Free
end;
finally
jpeg.Free
end;
end;
روی فرمم یه DBImage گذاشتم و توسط AdoTable به Table مورد نظرم وصل کردم ولی وقتی میخوام تو همین Disgn برنامه به طور دستی Active AdoTable ام رو True کنم برنامه قفل می کنه و حدود 10 تا 15 ثانیه طول می کشه تا True بشه چه برسه به این که موقع Run بخوام True کنم .
البته وقتی True میشه عکس رو درست بهم نشون میده . ولی نمی دونم چرا اینقدر طول می کشه ؟؟؟
یه چیز دیگه
من روی فرمم 3 تا AdoTable دارم که به طور دستی ConnectionString هر سه رو پر کردم و به بک بانک وصل کردم که 2 تاشون به یه Table مشترک وصل اند .
ممکنه از این باشه ؟؟

vcldeveloper
پنج شنبه 17 اسفند 1385, 08:50 صبح
کد بالا که فقط کد تبدیل JPG به BMP هست و چگونگی ذخیره فایل BMP در بانک را مشخص نمی کنه.
در ضمن، اکثرا فایل های BMP را به JPG تبدیل می کنند تا حجمش کمتر بشه و بعد در بانک ذخیره می کنند، چطور شده که شما برعکس عمل می کنید؟!


من روی فرمم 3 تا AdoTable دارم که به طور دستی ConnectionString هر سه رو پر کردم و به بک بانک وصل کردم که 2 تاشون به یه Table مشترک وصل اند .
1- بجای اینکه هر یک از AdoTable ها را بصورت جداگانه به بانک متصل کنید، از یک AdoConnection برای اتصال به بانک استفاده کنید و AdoTable ها را به آن AdoConnection متصل کنید.
2- اگر تصاویر BMP را مستقیما در جداول بانک اطلاعاتی ذخیره می کنید، باز کردن AdoTable ها باعث میشه کل داده های هر جدول (شامل فیلدهای باینری) در حافظه لود بشند که با توجه به حجیم بودن عکس های BMP، این مسئله موجب کاهش سرعت برنامه در زمان اتصال به بانک و افزایش حافظه مصرفی برنامه میشه.
بهتره بجای این کار از یک AdoQuery یا AdoDataSet استفاده کنید و در هر مرحله فقط رکوردهای مورد نیاز کاربر را از طریق کوئری از بانک دریافت کرده و به کاربر نمایش بدید.

shaghayegh_6113
شنبه 19 اسفند 1385, 20:35 عصر
آقای کشاورز من خیلی سعی کردم که عکسها رو به صورت Jpeg توی DataBase ذخیره کنم ولی نمی شد . یعنی هیچ Error ای نمی داد ولی وقتی ورد DataBase میشدم هیچ چیزی ذخیره نشده بود . من از Stream استفاده کردم و با Loadfromfile عکس ام رو خوندم و یه فیلد از نوع Ole توی DataBase که Access هست گرفتم و با اون Stream پرش کردم .
اگر روشم اشتباهه میشه بگید از چه کدی استفاده کنم ؟؟

Mahmood_M
یک شنبه 20 اسفند 1385, 03:23 صبح
سلام

در ضمن، اکثرا فایل های BMP را به JPG تبدیل می کنند تا حجمش کمتر بشه و بعد در بانک ذخیره می کنند، چطور شده که شما برعکس عمل می کنید؟
چطور میشه یک عکس از نوع Jpeg رو در بانک ذخیره کرد ؟ ( البته از دوستمون به خاطر این پست معذرت خواهی می کنم ) ...
اگه راهنمایی کنید ممنون میشم ...

MNosouhi
یک شنبه 20 اسفند 1385, 10:52 صبح
چطور میشه یک عکس از نوع Jpeg رو در بانک ذخیره کرد ؟ ( البته از دوستمون به خاطر این پست معذرت خواهی می کنم ) ...
اگه راهنمایی کنید ممنون میشم ...
قبلا آقا بابک مثالش رو گذاشتن. جستجو کنید.