barman.ar16
دوشنبه 30 مهر 1397, 18:51 عصر
سلام دوستان
من یه برنامه سی شارپی دارم که از دیتابیس sqlite داخلش استفاده می کنم
برای ذخیره عکس کارمندان از روش زیر استفاده می کنم
اول با این متد عکس رو تبدیل به byte می کنم و داخل دیتابیس ذخیره می کنم (نوع ستون عکس در دیتابیس رو از نوع blob میگیرم)
private byte[] ConvertImageToByte(string ImageLocation)
{
FileStream fs = new FileStream(ImageLocation, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] picture = null;
FileInfo fInfo = new FileInfo(ImageLocation);
long numBytes = fInfo.Length;
picture = br.ReadBytes(Convert.ToInt32(numBytes));
return picture;
}
برای برگردوندن عکس هم از این متد استفاده میکنم
...
...
SQLiteDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
byte[] picbyte = reader["image"] as byte[] ?? null;
if (picbyte != null)
{
MemoryStream mstream = new MemoryStream(picbyte);
frame.Image = System.Drawing.Image.FromStream(mstream);
{
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(mstream);
}
}
}
خب مشکلی هم باهاش ندارم فقط میرسم به بحث سایز عکس
برای جلوگیری از بالا رفتن حجم دیتابیس میخوام قبل از ذخیره عکس اون رو ریسایز کنم تا نهایتا هر عکس بیشتر از 100 کیلوبایت نشه
خیلی جستجو کردم چند تا روش دیدم یکی کاهش حجم عکس از طریق quality هست که اون به کارم نمیومد چون مثلا عکسی اگر حجمش 6 مگ باشه ما quality رو 50l بدیم میشه 2 مگ که به درد من نمیخوره
روش دیگه تغییر سایز عکس هست که اون هم به نتیجه نرسیدم
ممنون میشم یک راه حلی بفرمایید
در ضمن اولش فکر کردم هنگام انتخاب عکس سایز رو چک کنم اگر بالاتر از اونی که میخواستم بود خطا بگیرم اما خب اینطوری خود کاربر بره سایز عکس رو دستی تغییر بده که ماشالله کاربرها هم همگی ناشی و کارنابلد هستند پس چه بهتر خودم تغییر سایزش بدم
ممنون
من یه برنامه سی شارپی دارم که از دیتابیس sqlite داخلش استفاده می کنم
برای ذخیره عکس کارمندان از روش زیر استفاده می کنم
اول با این متد عکس رو تبدیل به byte می کنم و داخل دیتابیس ذخیره می کنم (نوع ستون عکس در دیتابیس رو از نوع blob میگیرم)
private byte[] ConvertImageToByte(string ImageLocation)
{
FileStream fs = new FileStream(ImageLocation, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] picture = null;
FileInfo fInfo = new FileInfo(ImageLocation);
long numBytes = fInfo.Length;
picture = br.ReadBytes(Convert.ToInt32(numBytes));
return picture;
}
برای برگردوندن عکس هم از این متد استفاده میکنم
...
...
SQLiteDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
byte[] picbyte = reader["image"] as byte[] ?? null;
if (picbyte != null)
{
MemoryStream mstream = new MemoryStream(picbyte);
frame.Image = System.Drawing.Image.FromStream(mstream);
{
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(mstream);
}
}
}
خب مشکلی هم باهاش ندارم فقط میرسم به بحث سایز عکس
برای جلوگیری از بالا رفتن حجم دیتابیس میخوام قبل از ذخیره عکس اون رو ریسایز کنم تا نهایتا هر عکس بیشتر از 100 کیلوبایت نشه
خیلی جستجو کردم چند تا روش دیدم یکی کاهش حجم عکس از طریق quality هست که اون به کارم نمیومد چون مثلا عکسی اگر حجمش 6 مگ باشه ما quality رو 50l بدیم میشه 2 مگ که به درد من نمیخوره
روش دیگه تغییر سایز عکس هست که اون هم به نتیجه نرسیدم
ممنون میشم یک راه حلی بفرمایید
در ضمن اولش فکر کردم هنگام انتخاب عکس سایز رو چک کنم اگر بالاتر از اونی که میخواستم بود خطا بگیرم اما خب اینطوری خود کاربر بره سایز عکس رو دستی تغییر بده که ماشالله کاربرها هم همگی ناشی و کارنابلد هستند پس چه بهتر خودم تغییر سایزش بدم
ممنون