PDA

View Full Version : نحوه ذخیره عکس در database



mehrdadpaknejad
پنج شنبه 24 اسفند 1391, 21:04 عصر
سلام دوستان
می خواستم یه پروژه ایجاد کنم که کاربر عکس انتخاب کنه ان عکس تو pictur box لود بشه و کاربر بتونه ادرس ان را در database ذخیره کنه خود عکس هم در شاخه ای در پروژه بشینه لطفا اگه کسی این کار را تا حالا انجام داده نمونه پروژه ان را برام بذاره یا اینکه بگه باید چی کار کنم . در ضمن در asp.net می دونم این کار به چه شکل هست اما در ویندوز و در c# می خواهم این کار را انجام بدهم

sgh_programer
پنج شنبه 24 اسفند 1391, 21:44 عصر
سلام دوست عزیز
به نظر من این کارتون درست نیست چون ممکن است اون فولدر که قراره عکس هاتون توی اون ذخیره شن پاک بشه یا یه عکسی هم نام اون عکساتون جایگذین بشه که قطعا جوابی که بدست میاد اشتباه است یعنی ممکنه عکسی خالف انتظارتون نشون بده

اگه عکساتون را به صورت بایت در بانک اطلاعاتی ذخیره کنی مطمئن تر هستید

موفق باشید

khokhan
پنج شنبه 24 اسفند 1391, 23:58 عصر
درود بر شما

نمونه ذخیره مسیر تصویر در دیتابیس sql

mehrdadpaknejad
شنبه 26 اسفند 1391, 11:53 صبح
سلام دوست عزیز خیلی از تون ممنونم .به نظر شما بهترین روش برای ذخیره سازی عکس همین روش هست دیگه چون خیلی ها میگن خوده عکس را ذخیره کن خیلی ها میگن ادرس ان را ذخیره کن اگه میشه اینم جواب بدید .

h_assefi
شنبه 26 اسفند 1391, 12:29 عصر
سلام دوست عزیز
تمام نکاتی که دوستان گفتند صحیح و قابل اجرا است اما هیچ گونه کمبودی توی ذخیره آدرس فایل توی دیتابیس نیست چون می تونی فایلت را غیر قابل تغییرش کنی
انتخا روش انجام کار با خودت هستش
موفق باشی

bazardeh
شنبه 26 اسفند 1391, 12:43 عصر
از کلاس MemoryStream می تونی استفاده کنی روش خوبیه

mehrdadpaknejad
شنبه 26 اسفند 1391, 13:01 عصر
سلام وشرمنده که مزاحم شدم من از روشی که گفته شد رفتم اما خطا صادر می کنه
A generic error occurred in GDI+.
هر چه قدر هم جستجو کردم به جایی نریسیدم
اگه ممکنه کمکم کنید

h_assefi
شنبه 26 اسفند 1391, 13:09 عصر
از کدام روش؟
ذخیره خود عکس
یا ذخیره آدرس فایل عکس

mymina
شنبه 26 اسفند 1391, 13:19 عصر
نحوه لود عکس ونمایش در picturebox


//بارگذاری عکس از فایل
private void butpic_Click(object sender, EventArgs e)
{
ofd.Filter = "Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.*";
ofd.Title = "انتخاب تصویر";

if (ofd.ShowDialog() == DialogResult.OK)
{
try{
bmp = new Bitmap(ofd.FileName);

if (bmp.Size.Height <= 172 || bmp.Size.Width <= 130)
{

picbox.Image = Image.FromFile(ofd.FileName);
adr_bmp = ofd.FileName;
txtfilepic.Text = adr_bmp;

}
else
{
MessageBox.Show(" سایز عکس صحیح نمی باشد حداکثر سایز عکس 129, 171 می باشد");

}
}
catch (Exception)
{
MessageBox.Show("فايل وارد شده فايل تصويري نميباشد");
return;
}
}
}

برای ذخیره عکس به صورت باینری در پایگاه داده به صورت زیر عمل می کنید


tblPersonal person = new tblPersonal();
MemoryStream ms = new MemoryStream();
picbox.Image.Save(ms, picbox.Image.RawFormat);
byte[] arrpic = ms.GetBuffer();
ms.Close();
person.Pic = arrpic;
db.tblPersonals.InsertOnSubmit(person);
db.SubmitChanges();


اگر بخواهید آدرس عکس را ذخیره کنید
به جای arrpic مقدار زیر را ذخیره می کنیم که به صورت رشته می باشد.

person.Pic = ofd.FileName;

khokhan
شنبه 26 اسفند 1391, 13:44 عصر
سلام دوست عزیز خیلی از تون ممنونم .به نظر شما بهترین روش برای ذخیره سازی عکس همین روش هست دیگه چون خیلی ها میگن خوده عکس را ذخیره کن خیلی ها میگن ادرس ان را ذخیره کن اگه میشه اینم جواب بدید .
درود بر شما

این روش که مسیر فایل تصویر رو در دیتابیس ذخیره کنین فکر کنم دیگه خیلی قدیمی شده

جایی که برنامه شما دیتابیس به این قدرتمندی داره که می تونه با یه تعداد حجم بالا تصویر در خود ذخیره کنه

دیگه که نیازی به این کارها داره

البته امیدوارم بدتون نیاد شما با این کار مثل اینه که لقمه رو دور سرتون بچرخونین وتوی دهنتون بگذارین :لبخند:

حالا به هر ترتیب باز نظر شما شرطه

mehrdadpaknejad
شنبه 26 اسفند 1391, 16:51 عصر
از ذخیره ادرس عکس رفتم خطا صادر می کنه

mehrdadpaknejad
شنبه 26 اسفند 1391, 18:49 عصر
دوست عزیز سلام ممنون که جواب دادین من از کد شما استفاده کردم و از طریق ذخیره ادرس عکس رفتم اما یه مشکلی هست
زمتنی که ادرس را از ofd میگیریم ادرس جاری عکس را ب ما می ده در صورتی که بعد از اینکه ما ذخیره کردیم در فلان پوشه پروژه خودمون ادرس تغییر کرده و برای نمایش دوباره عکس با مشکل مواجه خواهیم شد . نظرت چیه ؟؟

khokhan
شنبه 26 اسفند 1391, 19:25 عصر
دوست عزیز سلام ممنون که جواب دادین من از کد شما استفاده کردم و از طریق ذخیره ادرس عکس رفتم اما یه مشکلی هست
زمتنی که ادرس را از ofd میگیریم ادرس جاری عکس را ب ما می ده در صورتی که بعد از اینکه ما ذخیره کردیم در فلان پوشه پروژه خودمون ادرس تغییر کرده و برای نمایش دوباره عکس با مشکل مواجه خواهیم شد . نظرت چیه ؟؟

با سلام

خیلی ساده است
اگه به اون مثالی که من براتون ارسال کرده ام تجه کرده باشین در هنگام ذخیره مسیر ما ابتدا می آییم مسیر جاری عکس رو به دیتابیس می فرستیم وآخر دستورات دکمه save با یک استریم یک کپی از خود عکس رو هم به پوشه imageدر پوشه bin میفرستیم

حال اگه قرارباشه بیاییم قضیه رو برعکس بکنیم ابتدا کپی عکس رو به اون پوشه بفرستیم وبعد آدرس رو ذخیره بکنیم :لبخند: خوب چیز خنده داری می شه

یعنی همه مسیر های ذخیره شده در دیتابیس بیش از یکی نمی شه

alexmcse
شنبه 26 اسفند 1391, 21:05 عصر
سلام دوستان
می خواستم یه پروژه ایجاد کنم که کاربر عکس انتخاب کنه ان عکس تو pictur box لود بشه و کاربر بتونه ادرس ان را در database ذخیره کنه خود عکس هم در شاخه ای در پروژه بشینه لطفا اگه کسی این کار را تا حالا انجام داده نمونه پروژه ان را برام بذاره یا اینکه بگه باید چی کار کنم . در ضمن در asp.net می دونم این کار به چه شکل هست اما در ویندوز و در C#‎ می خواهم این کار را انجام بدهم

لینک ذخیره عکس در اس کیو ال

http://alexmcse.blogsky.com/

h.rezaee
شنبه 26 اسفند 1391, 23:14 عصر
درود بر شما

نمونه ذخیره مسیر تصویر در دیتابیس sql
دوست عزیز ممنون. ولی ببخشید که اینجا سوالم رو می پرسم. مخصوصا از کسی که این تاپیک رو زده:لبخند:
ببینید بنده می خوام برنامه شما رو با این برنامه تلفیق کنم.
یعنی اینکه بتونم هر چنتا عکس که می خوام به datagrid اضافه کنم و بعد که دکمه ذخیره رو زدم مثل برنامه شما اون رو ذخیره کنه. می خواستم ببینم چه جوریه؟؟؟؟؟؟؟؟؟؟؟
بعد می خواستم بدونم چه جوری میشه تنظیم کنم که این عکس هایی که داره با هم آپلود میشه همگی برای یک مورد باشه. برای مثال یه ستون باشه که بشه یه عدد خاصی ( مثلا 1 ) رو به 10 تا عکسی که با هم آپلود میشن قرار بدیم.؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟

khokhan
یک شنبه 27 اسفند 1391, 00:54 صبح
دوست عزیز این کار با شیوه ذخیره مسیر فایل امکان پذیر نیست البته هست اما چیز خوبی از کار در نمی آد

بهتره به فکر ذخیره فایل در داخل دیتابیس باشین با حداقل 5 تا ستون

1- آی دی 2- گروه یا همون کتگوری 3 - کدشناسایی گروه 4 -تصویر (که با توجه به ورژن sql تون نوع ستون رومشخص می کنین )

اگه کد گروه رو به عنوان کلید در نظر بگیرین با انتخاب اون می تونین عکساتون رو فیلتر کنین

linux
یک شنبه 27 اسفند 1391, 09:11 صبح
//بارگذاری عکس از فایل
private void butpic_Click(object sender, EventArgs e)
{
ofd.Filter = "Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.*";
ofd.Title = "انتخاب تصویر";

if (ofd.ShowDialog() == DialogResult.OK)
{
try{
bmp = new Bitmap(ofd.FileName);

if (bmp.Size.Height <= 172 || bmp.Size.Width <= 130)
{

picbox.Image = Image.FromFile(ofd.FileName);
adr_bmp = ofd.FileName;
txtfilepic.Text = adr_bmp;

}
else
{
MessageBox.Show(" سایز عکس صحیح نمی باشد حداکثر سایز عکس 129, 171 می باشد");

}
}
catch (Exception)
{
MessageBox.Show("فايل وارد شده فايل تصويري نميباشد");
return;
}
}
}
این کد را بزنید سر در انجمن دورشم یک قاب بگیرید تا حالا ۱۰۰ بار این سوال را پرسیدند.

mehrdadpaknejad
یک شنبه 27 اسفند 1391, 09:12 صبح
دوست عزیز مسیر همشون یکی بشه اما نام ها که یکی نیست بر اساس نام عکس می گرده پیدا می کنه و لود می کنه.