نمایش نتایج 1 تا 5 از 5

نام تاپیک: تغییر سایز تصاویر اپلود شده به یک سایز ثابت بدون دفرمه شدن

  1. #1

    تغییر سایز تصاویر اپلود شده به یک سایز ثابت بدون دفرمه شدن

    با سلام
    دوستان من باکس هایی که برای نمایش تصاویر در وبسایتم قرار دارم سایز ثابت 600 در 600 دارن و اجازه هم نمیدم کاربر عکس هایی کوچکتر از 600 در 600 آپلود کنه حالا میخوام عکس بدون دفرم شدن (نگه داشتن aspect ratio) با اندازه 600 در 600 ذخیره بشه مشکلی که وجود داره اینه که اگه 600 در 600 از عکس رو کراپ کنم اونوقت اگه عکس کاربر خیلی بزرگ باشه فقط یه بخش کوچیکیش ذخیره میشه اگرم از متدهایی که برای ریسایز هست استفاده کنم و aspectratio رو نگه دارم عرض یا طول عکس یه عددی متفاوت با 600 میشه چون aspectratio رو نگه داشتم
    ممنون میشم راهنمایی کنید

  2. #2

    نقل قول: تغییر سایز تصاویر اپلود شده به یک سایز ثابت بدون دفرمه شدن

    aspectratio نصبت طول و عرض تصویر به هم هست حالا شما اگر تصویرت طول و عرضش برابر نباشه سه تا راه داری
    1- تصویر رو بدون تغییر اندازه ببری اما اگر تصویرت کوچکتر از ابعاد مورد نظر باشه نمی تونی از این روش استفاده کنی
    2- تصویر رو بطور عادی تغییر بدی که در این حالت نسبت طول و عرض حفظ میشه اما اگر ابعاد برابر نباشه بزرگترینش میشه 600 کوچکترینش میشه یک چیز دیگه
    3- تصویرتو ببینی طولش بیشتره یا عرضش ، همونکه بیشتره رو رو 600 تنظیم کنی و اون بعد دیگش که کم داره به مقدار لازم فضا بدی بهش مثل همون margin در ورد میشه که فکر کنم مناسب تره اینم کدش


    double width = 600;
    double height = 600;
    Bitmap img = new Bitmap("d:\\abiBox.jpg");
    double rx = width / img.Width;
    double ry = height / img.Height;
    double rto = rx < ry ? rx : ry;
    Bitmap newImg = new Bitmap(Convert.ToInt32(width), Convert.ToInt32(height));
    Graphics graphic = Graphics.FromImage(newImg);
    graphic.Clear(Color.White);
    graphic.DrawImage(img,
    (int)((width - (img.Width * rto)) / 2),
    (int)((height - (img.Height * rto)) / 2),
    (float)(img.Width * rto),
    (float)(img.Height * rto)
    );
    newImg.Save("d:\\a.jpg");


    توی دستورات بالا نکتش فقط دستور زیره

    graphic.Clear(Color.White);
    این دستوره قبل از اینکه تصویر اصلیتو بکشی کل آبجک گرافیکتو با رنگ سفید پر میکنه و بعد از کشیدن تصویر اصلیت همون بعدی که کم داره سفید میمونه و ابعاد تصویرت میشه همون که میخوای
    آخرین ویرایش به وسیله am_al_59 : شنبه 02 آبان 1394 در 02:03 صبح

  3. #3

    نقل قول: تغییر سایز تصاویر اپلود شده به یک سایز ثابت بدون دفرمه شدن

    ممنون دوست عزیز از راهنماییتون ولی اولا من به کاربر اجازه نمیدم عکسی که طول یا عرضش کوچکتر از 600 هست آپلود کنه و همینطور من نمیخوام جایی از عکس خالی (سفید) بمونه من میخوام دقیقا به همون اندازه 600 در 600 ذخیره بشه بدون اینکه دفرمه بشه و مشکلی هم ندارم که مقداری از عکس هم کراپ بشه ولی نمیخوام اگه کاربر عکس 2000 در 2000 آپلود کرد یه 600 در 600 ازش کراپ کنم که چیز خاصی از عکسش نمونه

  4. #4

    نقل قول: تغییر سایز تصاویر اپلود شده به یک سایز ثابت بدون دفرمه شدن

    این شکلی بنویس

    double width = 600;
    double height = 600;
    Bitmap img = new Bitmap("d:\\abiBox.jpg");
    double rx = width / img.Width;
    double ry = height / img.Height;
    double rto = rx > ry ? rx : ry;
    Bitmap newImg = new Bitmap(Convert.ToInt32(width), Convert.ToInt32(height));
    Graphics graphic = Graphics.FromImage(newImg);
    graphic.DrawImage(img, 0, 0,
    img.Width < img.Height ? (float)width : (float)(img.Width * rto),
    img.Height < img.Width ? (float)height : (float)(img.Height * rto));
    newImg.Save("d:\\a.jpg");

  5. #5

    نقل قول: تغییر سایز تصاویر اپلود شده به یک سایز ثابت بدون دفرمه شدن

    این هم کد وبی اش هست اگه کسی خواست استفاده کنه متنها این کراپش از وسط به اندازه مساوی هست نه از یک طرف:


    using (var bitmap = new Bitmap(image.InputStream))
    {
    var width = bitmap.Width;
    var height = bitmap.Height;


    double widthRatio = (double)600 / width;
    double heightRatio = (double)600 / height;
    double ratio = widthRatio > heightRatio ? widthRatio : heightRatio;


    var resizedWidth = width < height ? 600 : (int)(width * ratio);
    var resizedHeight = height < width ? 600 : (int) (height * ratio);


    var converter = new ImageConverter();
    var image =
    new WebImage((byte[])converter.ConvertTo(bitmap, typeof(byte[])))
    .Resize(resizedWidth, resizedHeight)
    .Crop((resizedHeight - 600) / 2, ((resizedWidth - 600 )/ 2), ((resizedHeight - 600) / 2), ((resizedWidth - 600) / 2));

    آخرین ویرایش به وسیله adameh_bahal : شنبه 02 آبان 1394 در 14:44 عصر

تاپیک های مشابه

  1. تغییر نام فایل اپلود شده و چشباندن زمان و تاریخ و ثانیه
    نوشته شده توسط Arezoo62 در بخش ASP.NET Web Forms
    پاسخ: 8
    آخرین پست: چهارشنبه 05 شهریور 1393, 16:50 عصر
  2. تغییر سایز زمان اپلود
    نوشته شده توسط bbc_sh در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: پنج شنبه 02 مهر 1388, 23:32 عصر
  3. به دست اوردن طول و عرض تصاویر اپلود شده
    نوشته شده توسط fereshte22 در بخش ASP.NET Web Forms
    پاسخ: 11
    آخرین پست: یک شنبه 14 مرداد 1386, 20:30 عصر
  4. تغییر سایز تصاویر
    نوشته شده توسط tabib_m در بخش PHP
    پاسخ: 6
    آخرین پست: پنج شنبه 17 اسفند 1385, 21:12 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •