PDA

View Full Version : سوال: کم کردن اندازه تصویر بدون افت کیفیت؟؟



Zabi42
پنج شنبه 29 اردیبهشت 1390, 19:48 عصر
با سلام خدمت دوستان
من می خوام عکس با هر اندازه ای که وارد سایتم میشه قبل از Upload توسط کد به اندازه 400*300 تبدیل و بعد در سرور ذخیره شود و کیفیت عکس تغییری نکنه (البته تا حد ممکن) متاسفانه من در زمینه کار با فایل و عکس چیز زیادی نمی دونم و در رابطه با این موضوع هم در اینترنت جستجو کردم و چند نمونه برنامه هم پیدا کردم ولی متاسفانه جالب نبودن چون کیفیت عکس خیلی پایین میومد
حالا میخوام بدونم همچین کاری امکان پذیر هست؟؟؟ (عکس ها معمولا دارای اندازه 3264*2448 هستند و من مخوام که به 400*300 تغییر اندازه بکنه بدون افت کیفیت)
و اگر هم حجم عکس کاهش پیدا کنه که خیلی بهتر ( در وب حجم عکس هر چه کمتر رضایت بیشتر)

Zabi42
پنج شنبه 05 خرداد 1390, 01:02 صبح
ممنون از توجه و راهنمایی شما!!!

TeacherMath
پنج شنبه 05 خرداد 1390, 01:27 صبح
به این سایت سر بزن واین نمونه را دانلودکن در ان در مورد تغییر اندازه عکس مطالبی هست.
http://www.asp.net/downloads/starter-kits/personal

FirstLine
جمعه 06 خرداد 1390, 22:29 عصر
با سلام
با این متد میتونی این کار را براحتی انجام بدی:


/// <summary>
/// http://www.eghlid.com/?p=92
/// تغییر سایز عکس
/// </summary>
/// <param name="str_File_Name">آدرس فیزیکی و کامل عکس</param>
/// <param name="int_New_Width">اندازه طول عکس جدید</param>
/// <param name="int_New_Height">اندازه عرض عکس جدید</param>
/// <param name="bol_Resize_By_Scale"></param>
public void MH_Image_Resize(string str_File_Name, int int_New_Width, int int_New_Height, bool bol_Resize_By_Scale)
{

float newHeight = 0;
float newWidth = 0;
float scale = 0;
int size = 0;
Bitmap curImage = new Bitmap(str_File_Name);

if (int_New_Width == 0 & int_New_Height == 0)
int_New_Width = 100;
if (int_New_Width == 0)
size = int_New_Height;
if (int_New_Height == 0)
size = int_New_Width;

if (bol_Resize_By_Scale)
{
if (curImage.Height > curImage.Width)
{
scale = size / Convert.ToSingle(curImage.Height);
}
else
{
scale = size / Convert.ToSingle(curImage.Width);
}
if (scale < 0 || scale > 1)
{
scale = 1;
}
newWidth = Convert.ToSingle(curImage.Width) * scale;
newHeight = Convert.ToSingle(curImage.Height) * scale;
}
else
{
newWidth = int_New_Width;
newHeight = int_New_Height;
}

Bitmap newImage = new Bitmap(curImage, Convert.ToInt32(newWidth), Convert.ToInt32(newHeight));
Graphics imgDest = Graphics.FromImage(newImage);

imgDest.DrawImage(curImage, 0, 0, newImage.Width, newImage.Height);
curImage.Dispose();
newImage.Save(str_File_Name);
newImage.Dispose();
imgDest.Dispose();

}
با تشکر