PDA

View Full Version : سوال: کد تصویر



elena
پنج شنبه 15 بهمن 1388, 15:48 عصر
سلام.من روی فرم دلفی چندتا دیبی ادیت ویه دیبی گرید دارم می خوام همراه هررکورد یه عکس هم ذخیره کنم برای وارد کردن عکس نمیدونم از چه عنصری استفاده کنم.اگه میشه کد مربوط به عکس راهم بزارین.این کدرا کجاباید واردکنم.یه فرم دیگه هم برای نمایش اطلاعات دارم میشه عکس به همراه هررکورد تو دیبی گرید نمایش داده بشه.از بانک اطلاعاتی اس کیوال استفاده کردم.اگه میشه یه نمونه قرار بدین.

سعید صابری
پنج شنبه 15 بهمن 1388, 17:00 عصر
براي وارد كردن عكس از Image استفاده مي كنند براي يادگيرش هم blob در سايت سرچ كن كاملا توضيح داده شده به همراه نمونه

حسین شهریاری
شنبه 17 بهمن 1388, 09:28 صبح
سلام

حدود دو ماه پیش بنده روشی ارائه کردم که نیازی به ذخیره مستقیم تصاویر توی بانک نداشت چرا که حجیم شدن پایگاه داده و کاهش سرعت(خصوصا در شبکه)را بهمراه خواهد داشت.کافیه شما یه فولدر کنار فایل اجرایی قرار بدید و تصاویر را داخل اون بریزید و یه فیلد رشته ای داشته باشید تا فقط و فقط نام و پسوند فایهای تصویری را توی اون ذخیره کنید.برای مسیر یابی نیز از ExtractFilePathو ExtractFileNameاستفاده میشد.
یه جستجو بکنید پیداش میکنید.تمام جزئیات اونجا ذکر شده.

hyl_piano
شنبه 17 بهمن 1388, 10:35 صبح
این کد برای زمانی هست که برنامه تحت شبکه نباشد، اما باید برنامه طوری طراحی بشه که آینده اون درنظر گرفته بشه.
برای ذخیرع عکس و فراخوانی عکس از بانک ، من 1 روش خوب دارم.
ابتدا باید حجم و سایز عکس تا جایی که امکان داره ، کم بشه تا مشکل load نداشته باشیم.
بهترین راه اینه که از فرمت jpeg استفاده کنیم نه اینکه عکسمون رو پسوندشو تغییر بدیم.
ابتدا از uses jpeg در بالای برنامه استفاده کنید تا فرمت jprg شناخته بشه.
من 1 پروسیجر نوشتم که نام عکس رو میگیره و بعد 1 فایل از عکس موردنظر میسازه.

------------------------
پروسیجر :


procedure CNV_IMG(f_name:string);
var
a1:TJPEGImage;
a2:TImage;
begin
a1 :=TJPEGImage.Create;
a2 :=TImage.Create(Form1.Image1);
a2.Width :=Form1.Image1.Width;
a2.Height :=Form1.Image1.Height;
a2.Picture.Bitmap:=Form1.GetFormImage;
a1.Assign(a2.Picture.Graphic);
a1.SaveToFile(f_name);
a1.Free;
a2.Free;
end;
------------------------------------------------------------
ذخیره سازی :


var
fi :file;
begin
with adoCommand1 do
begin
CNV_IMG('1.jpg');
CommandText:='insert into table1 (cod,nam,ax) values (:a1,:a2,:a3)';
Parameters.ParamValues['a1']:=trim(Edit1.Text);
Parameters.ParamValues['a2']:=trim(Edit2.Text);
Parameters.ParamByName('a3').LoadFromFile('1.jpg', ftGraphic);
Execute;
AssignFile(fi,'1.jpg');
Erase(fi);
end;
end;
-------------------------------------------
load کردن فایل عکس


var
a1:TJPEGImage;
begin
with ADOQ1 do
begin
Close;
SQL.Text:='select * from table1 where cod=:a1';
Parameters.ParamValues['a1']:=Edit1.Text;
Open;
if RecordCount=1 then
begin
Edit2.Text:=FieldByName('nam').Value;
//==========
a1:=TJPEGImage.Create;
a1.Assign(FieldByName('ax'));
Image1.Picture.Assign(a1);
//==========
end
else
Image1.Picture.Assign(nil);
end;
end;
-----------------------------------------------
این 3 قسمت ، فایل عکس رو میساخت ، ذخیره میکنه و بعدش نمایش میده.
امتحان کنید، اگه مشکلی داشت که بعید میدونم ، حتما بگید.

حسین شهریاری
شنبه 17 بهمن 1388, 11:16 صبح
دوست عزیز بنده هم اون روشا برای برنامه شبکه ارائه کرده بودم.چراکه:
1-ذخیره تصویر هر چند هم فشرده و کم حجم باشه باعث در حجم دیتای انبوه باعث دیزلی شدن سیستم میشه.
2-همیشه مکانیابی در بدترین حالتش خیلی سریعتر از ذخیره و بازیابی یه تصویر ذخیره شده توی بانک هست.من توی محیط واقعی به این نتیجه رسیدم.

elena
یک شنبه 18 بهمن 1388, 18:24 عصر
اگه میشه یه نمونه قرار بدین.زیاد متوجه نشدم. لطفا توضیح بدین روی فرم چه عناصری قرار بدم واین کدها رو دقیقا کجا وارد کنم.تو ادیت1 وادیت2 موقع اجرا چی وارد کنم.

سعید صابری
دوشنبه 19 بهمن 1388, 19:03 عصر
یکی نیست بهم کمک کنه

چرا جستجو

http://barnamenevis.org/forum/showthread.php?t=8529
http://barnamenevis.org/forum/showthread.php?t=124596

hasti-jan
جمعه 20 فروردین 1389, 16:49 عصر
من پیشنهاد میکنم آدرس عکسها بجای خود عکس ذخیره چون حجم دیتابیس زیاد میشه
بعدشم میشه یه image بذاری و با تغییر کرده مکان نما روی گرید image را از آدرسش load کنی

nilidelphi
جمعه 20 فروردین 1389, 20:51 عصر
بابا از يك dbimage استفاده كن ديگه .......
نوع فيلدت در ديتابيس از نوع باينري بگير و تو دلفي اونو به dbimage متصل كن.
هم تو ذخيره كردنش مشكلي نيست و هم در لود كردنش.

Mahmood_M
شنبه 21 فروردین 1389, 16:37 عصر
اگه میشه یه نمونه قرار بدین.زیاد متوجه نشدم. لطفا توضیح بدین روی فرم چه عناصری قرار بدم واین کدها رو دقیقا کجا وارد کنم.تو ادیت1 وادیت2 موقع اجرا چی وارد کنم.
اگر هنوز اين مشكل رو داريد در اينجا (http://barnamenevis.org/forum/showpost.php?p=930543&postcount=3) يك نمونه هست كه ميتونه كمكتون كنه ...

موفق باشيد ...