چگونه حجم عکس را در#C پایین بیاوریم
گاهی وقتا لازم است که عکس هایی را که کاربر وارد سیستم می کند را کنترل کنیم و حجم آن را پایین بیاوریم و در دیتابیس ذخیره کنیم تا فضای کمتری را به خود اختصاص دهد ما در این بخش قصد داریم که این کار را انجام دهیم و حجم عکس را با استفاده از یه روش خاصی پایین بیاوریم و در دیتابیس ذخیره کنیم.
برای این کار باید از فرمول زیر استفاده کنیم و در نهایت با استفاده از ابزار های موجود در دات نت این فرمول را پیاده کنیم.
عدد مورد نظر را بر سایز عکس تقسیم می کنیم و نهایتن رادیکال آن را بدست می آوریم. و مقدار بدست آمده را در طول و عرض عکس مورد نظر ضرب می کنیم و کد آن هم بصورت زیر می باشد.
البته قبل از کار کردن باید یک رفرنس به نام System.web.Helpers را اضافه کنیم
در این مثال قصد داریم یک عکس از کاربر دریافت کنیم و نهایتن ججم آن عکس را به 50 کیلو بایت برسانیم
using System.Web.UI.WebControls;
double AttachmentTypeMaxSize = 1024;
double Length = FileUploadSendFile.PostedFile.ContentLength;
double UserInsert =50* 1024;
double sizeimage = Math.Sqrt((UserInsert / Length));
Byte[] FileUplodData = (Byte[])FileUploadSendFile.FileBytes;
if (Length >= UserInsert)
{
System.Drawing.Image imgFile = System.Drawing.Image.FromStream(FileUploadSendFile.PostedFile.InputStream);
double ImageWith = imgFile.PhysicalDimension.Width * sizeimage;
double ImageHeight = imgFile.PhysicalDimension.Height * sizeimage;
var webImage = new System.Web.Helpers.WebImage(FileUploadSendFile.FileBytes);
webImage.Resize(Convert.ToInt32(ImageWith),Convert.ToInt32(ImageHeight), false, true);
//webImage.Save(AppDomain.CurrentDomain.BaseDirectory, "jpg", true);
FileUplodData= webImage.GetBytes();
}