PDA

View Full Version : سوال: چگونگی ذخیره عکس در بانک اطلاعاتی sqlserver 2008 r2



h.rezaee
یک شنبه 06 اسفند 1391, 08:57 صبح
سلام. فکر کنم از عنوان سوالم مشخصه که منظورم چیه. ببینید دوستان بنده نرم افزاری رو نوشتم که یه قسمتیش باید این امکان رو داشته باشه که عکس فرد رو بتئنیم آپلود کنیم تو دیتابیس. ( لازم به ذکره بگم این برنامه تحت ویندوزِ هستش ) این دیتابیس sqlserver 2008 r2 هستش. نمونه کد اکسس رو دارم منتها به دنبال کار با بانک sql هستم. بعد می خوام بدونم چه جوری میشه براش یه فیلترینگ قرار بدیم تا عکس هایی با حجم "مثلا 50 کیلو بایت " فقط امکان آپلود داشته باشن.
منظورم از طراحی دیتابیس، نوع دیتا ذخیره شده رو باید چی انتخاب کنم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
البته ممنون میشم اگه نمونه کد یا برنامه دارید بزارید، واقعا بزرگوارید"

danialafshari
یک شنبه 06 اسفند 1391, 09:11 صبح
سلام
فکر نمی کنم فرق خاصی با sql داشته باشه
برای ذخیره هم اگه اشتباه نکنم varbinary هست
برای فیلتر :
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
System.IO.FileInfo fi = new System.IO.FileInfo(openFileDialog1.FileName);
double size=fi.Length;
// 70 kb
if (size > 71680)
{
MessageBox.Show("سایز فایل انتخابی بیشتر از حد تعیین شده می باشد", "هشدار", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
عکس های زیر 70 کیلوبایت

موفق باشی

h.rezaee
یک شنبه 06 اسفند 1391, 11:04 صبح
ممنون. اگر بخواهیم محدودیت بر اساس w,h ایجاد کنیم ، چه جوریه؟؟؟؟؟؟؟؟؟ آیا شما این کار را توصیه می کنید یا نه؟

danialafshari
یک شنبه 06 اسفند 1391, 11:34 صبح
به نظرم هر دو بهتره
ولی کار بهتر اینه که عکس در کنار برنامه در یک Folder ذخیره بشه و فقط مسیرش در بانک ذخیره بشه
البته اینم مشکلاتی داره از جمله: مشاهده عموم از پوشه ولی حسنی که داره بانک رو سنگین نمیکنه و سرعت نسبتا بالایی داره

h.rezaee
یک شنبه 06 اسفند 1391, 11:49 صبح
این برنامه win app هستش، که اگه یادتون باشه یه تاپیک هم برای امنیتش زده بودم که شما لطف کردین جواب دادین.امنیت برای طرف مقابل خیلی شرطه

danialafshari
یک شنبه 06 اسفند 1391, 12:57 عصر
این برنامه win app هستش، که اگه یادتون باشه یه تاپیک هم برای امنیتش زده بودم که شما لطف کردین جواب دادین.امنیت برای طرف مقابل خیلی شرطه

خب در همون دیتابیس ذخیره کن
اگر برنامه من بود خودم به صورت اتوماتیک h-w و size رو تنظیم میکردم چون اگر بخواد توسط اپراتور این کارا انجام بشه کلافه میشه و باید جفت برنامه یه Photoshop هم باز کنه :لبخند:

h.rezaee
یک شنبه 06 اسفند 1391, 16:28 عصر
خب در همون دیتابیس ذخیره کن
اگر برنامه من بود خودم به صورت اتوماتیک h-w و size رو تنظیم میکردم چون اگر بخواد توسط اپراتور این کارا انجام بشه کلافه میشه و باید جفت برنامه یه Photoshop هم باز کنه :لبخند:
لطف میکنیدیه راهنمایی کنید که چه جوری عکس رو فقط در اندازه ای که خودمون میخوایم در بیاریم " منظورم همون w , h " و بعد تو دیتابیس ذخیره کنیم؟

Himalaya
یک شنبه 06 اسفند 1391, 16:41 عصر
سلام


چه جوری عکس رو فقط در اندازه ای که خودمون میخوایم در بیاریم " منظورم همون w , h " و بعد تو دیتابیس ذخیره کنیم؟
تصویر رو بده به تابع با سایز مورد نظر و خروجی رو تو فیلد (varbinary(Max قرار بده


public static byte[] BitmapToByte(Image bmp, int width, int height)
{
using (var bmpNew = new Bitmap(bmp, new Size(width, height)))
{
using (var ms = new MemoryStream())
{
bmpNew.Save(ms, ImageFormat.Png);
return ms.ToArray();
}
}
}