PDA

View Full Version : روش ذخیره عکس در داخل بانک



salehvasaleh
پنج شنبه 11 شهریور 1389, 01:54 صبح
دوستان فرض کنید توی یک فرم دو تا دکمه داریم + یک لیست باکس. از طریق دکمه اول یک سری عکس رو open می کنیم طوری که آدرس اون عکسها درون لیست باکس نشون داده می شه حالا سوالم اینه که چطوری می شه کاری کرد که با زدن دکمه دوم تمام عکسها(یکجا) و بصورت باینری در داخل بانک اطلاعاتی ذخیره بشن؟

East.Tiva
پنج شنبه 11 شهریور 1389, 02:11 صبح
هر کدوم از عکس ها رو ابتدا تبدیل به یک شی از جنس Image کنید، سپس اون image رو تبدیل به []byte (آرایه ای از بایت ها) کنید و این آرایه رو در دیتابیس ذخیره کنید.

برای ذخیره در دیتابیس، فیلد موردنظر در دیتابیس باید از جنس []byte یا image باشد.( دقت کنید که image در اینجا منظور تصویر نیست! و فقط حالت خاصی از همان []byte است)

salehvasaleh
پنج شنبه 11 شهریور 1389, 13:03 عصر
هر کدوم از عکس ها رو ابتدا تبدیل به یک شی از جنس Image کنید، سپس اون image رو تبدیل به []byte (آرایه ای از بایت ها) کنید و این آرایه رو در دیتابیس ذخیره کنید.

برای ذخیره در دیتابیس، فیلد موردنظر در دیتابیس باید از جنس []byte یا image باشد.( دقت کنید که image در اینجا منظور تصویر نیست! و فقط حالت خاصی از همان []byte است)
می شه کدهای این رو بنویسید؟

ایمان مدائنی
پنج شنبه 11 شهریور 1389, 13:05 عصر
اگه خواستي براي اينكه حجم بانك زياد نشه آدرس عكسها رو ذخيره كن و بعد از اون آدرسها عكسها رو بخون

mmd2009
پنج شنبه 11 شهریور 1389, 13:09 عصر
http://v30sharp.blogsky.com/

این سایت بالا یه سری کد داره

بگردی پیداش میکنی

javad_r_85
پنج شنبه 11 شهریور 1389, 14:01 عصر
private void button2_Click(object sender, EventArgs e)
{
MemoryStream ms = new MemoryStream();
pictureBox2.Image.Save(ms, pictureBox2.Image.RawFormat);
byte[] arrImage = ms.GetBuffer();
ms.Close();

SqlCommand Command = new SqlCommand("INSERT Into costomers(id,image) Values(11,@imageFile)", c);

System.IO.FileStream fs = new System.IO.FileStream(@"J:\private\1.jpg", System.IO.FileMode.Open);
byte[] imagecontent = new byte[fs.Length];
fs.Read(imagecontent, 0, (int)fs.Length);
SqlParameter ping = new SqlParameter("@imageFile", imagecontent);
ping.SqlDbType = SqlDbType.Image;
Command.Parameters.Add(ping);


c.Open();
Command.ExecuteNonQuery();
c.Close();
MessageBox.Show("ok");
}
MessageBox.Show("ok");

mmd2009
جمعه 12 شهریور 1389, 09:58 صبح
بیا دوست عزیز اینم کدهایی که به صورت حلقه بی نهایت ایتم درون لیست باکس رو ذخیره میکنه

البته روش های بهینه تر هم هست.



int i=0;
MemoryStream mstr = new MemoryStream();
SqlConnection con = new SqlConnection(Address_Db);
SqlCommand cmd;
con.Open();
foreach (string pic in list_address.Items)
{
Image im = null;
im = Image.FromFile(pic);
im.Save(mstr, im.RawFormat);
im = null;
byte[] arrImage = mstr.GetBuffer();
string q= "insert into picturee(id_name,pic,id)values(@id_name,@pic,@id)";
cmd = new SqlCommand(q, con);
cmd.Parameters.Add(@"id_name", SqlDbType.Char).Value = txtid.Text.Trim();
cmd.Parameters.Add(@"pic", SqlDbType.Binary).Value = arrImage;
cmd.Parameters.Add(@"id", SqlDbType.Char).Value = i.ToString();

cmd.ExecuteNonQuery();
cmd.Parameters.Clear();

cmd.Dispose();

i++;
}


con.Close();

navidiran
یک شنبه 25 مهر 1389, 13:08 عصر
سلام. دوستان اگر بخوام این کار رو با استفاده از LINQ انجام بدم چکار کنم. من در تالار مربوطه هم سوال رو مطرح کردم اما جوابی نگرفتم. http://www.barnamenevis.org/forum/showthread.php?t=253971
اگر ممکن هست یک راهنماییم کنه.

صباح فتحی
یک شنبه 25 مهر 1389, 14:17 عصر
سلام دوست عزیز اینم از برنامه درخواستی
اگه مشکلی داشتی بگو
تشکریادت نره:لبخند:

navidiran
یک شنبه 25 مهر 1389, 14:45 عصر
دوست عزیز ممنون از توجهی که داشتید اما من این دستورات رو با استفاده از LINQ می خوام به پایگاه ثبت کنم. توی دستور معمولی مشکلی نیست اما نمی دونم عکس رو به چه شکلی بفرستم:


ms MemoryStream= new MemoryStream
pictureBox1.Image.Save(ms, pictureBox1.Image.RawFormat);
byte[] array = ms.GetBuffer();

ms.Close();

person per=new person();
per.Address = addresstxt.Text.Trim();
per.Picture = ?

navidiran
یک شنبه 25 مهر 1389, 14:49 عصر
دوست عزیز ممنون از توجه شما. اما من می خواهم این دستورات رو با استفاده از LINQ وارد دیتابیس کنم.



person per=new person();
per.Address = addresstxt.Text.Trim();
per.Picture = ?;

$M03N$
یک شنبه 25 مهر 1389, 15:57 عصر
سلام دوست عزیز اینم از برنامه درخواستی
اگه مشکلی داشتی بگو
تشکریادت نره:لبخند:
سلام، آقا من وقتی برنامه را run می کنم، error زیر داده میشه، به نظر شما مشکل از چیه ؟

ایمان مدائنی
یک شنبه 25 مهر 1389, 15:58 عصر
سلام، آقا من وقتی برنامه را run می کنم، error زیر داده میشه، به نظر شما مشکل از چیه ؟
حالا اين اروري كه ميده كو ؟؟؟:متفکر:

$M03N$
یک شنبه 25 مهر 1389, 16:06 عصر
حالا اين اروري كه ميده كو ؟؟؟:متفکر:
عکسشو ضمیمه کردم، ملاحضه بفرمایید

صباح فتحی
یک شنبه 25 مهر 1389, 16:42 عصر
سلام، آقا من وقتی برنامه را run می کنم، error زیر داده میشه، به نظر شما مشکل از چیه ؟
خب معلومه دیگه بانکشو نزاشتم
تو بانک فیلد عکس نوعش Varbinar max است

navidiran
دوشنبه 26 مهر 1389, 08:23 صبح
دوست عزیز ممنون از توجه شما. اما من می خواهم این دستورات رو با استفاده از LINQ وارد دیتابیس کنم.



person per=new person();
per.Address = addresstxt.Text.Trim();
per.Picture = ?;


کسی؟ کمکی؟ راهنماییییی؟ پیشنهادی؟