تغییر سایز تصویر بعد از آپلود

چهارشنبه 30 مهر 1393

در این مقاله با نحوه تغییر سایز تصویر و ساخت تصویر کوچک از تصویر اصلی آشنا خواهید شد

تغییر سایز تصویر بعد از آپلود

سلام دوستان

در نمونه ضمیمه شده کلاسی وجود داره با نام ImageResizer.cs که کار تغییر سایز رو انجام میده

using System;
using System.Drawing;
using System.Drawing.Imaging;

namespace Barnamenevisan
{
        public class ImageResizer
        {
            /// <summary>
            /// http://www.blackbeltcoder.com/Articles/graph/programmatically-resizing-an-image
            /// Maximum width of resized image.
            /// </summary>
            public int MaxX { get; set; }

            /// <summary>
            /// Maximum height of resized image.
            /// </summary>
            public int MaxY { get; set; }

            /// <summary>
            /// If true, resized image is trimmed to exactly fit
            /// maximum width and height dimensions.
            /// </summary>
            public bool TrimImage { get; set; }

            /// <summary>
            /// Format used to save resized image.
            /// </summary>
            public ImageFormat SaveFormat { get; set; }

            /// <summary>
            /// Constructor.
            /// </summary>
            public ImageResizer()
            {
                MaxX = MaxY = 150;
                TrimImage = false;
                SaveFormat = ImageFormat.Jpeg;
            }

            /// <summary>
            /// Resizes the image from the source file according to the
            /// current settings and saves the result to the targe file.
            /// </summary>
            /// <param name="source">Path containing image to resize</param>
            /// <param name="target">Path to save resized image</param>
            /// <returns>True if successful, false otherwise.</returns>
            public bool Resize(string source, string target)
            {
                using (Image src = Image.FromFile(source, true))
                {
                    // Check that we have an image
                    if (src != null)
                    {
                        int origX, origY, newX, newY;
                        int trimX = 0, trimY = 0;

                        // Default to size of source image
                        newX = origX = src.Width;
                        newY = origY = src.Height;

                        // Does image exceed maximum dimensions?
                        if (origX > MaxX || origY > MaxY)
                        {
                            // Need to resize image
                            if (TrimImage)
                            {
                                // Trim to exactly fit maximum dimensions
                                double factor = Math.Max((double)MaxX / (double)origX,
                                    (double)MaxY / (double)origY);
                                newX = (int)Math.Ceiling((double)origX * factor);
                                newY = (int)Math.Ceiling((double)origY * factor);
                                trimX = newX - MaxX;
                                trimY = newY - MaxY;
                            }
                            else
                            {
                                // Resize (no trim) to keep within maximum dimensions
                                double factor = Math.Min((double)MaxX / (double)origX,
                                    (double)MaxY / (double)origY);
                                newX = (int)Math.Ceiling((double)origX * factor);
                                newY = (int)Math.Ceiling((double)origY * factor);
                            }
                        }

                        // Create destination image
                        using (Image dest = new Bitmap(newX - trimX, newY - trimY))
                        {
                            Graphics graph = Graphics.FromImage(dest);
                            graph.InterpolationMode =
                                System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                            graph.DrawImage(src, -(trimX / 2), -(trimY / 2), newX, newY);
                            dest.Save(target, SaveFormat);
                            // Indicate success
                            return true;
                        }
                    }
                }
                // Indicate failure
                return false;
            }
        }

    }

 

در مرحله بعد باید تصویر را روی سرور ذخیره کرده و سپس نمونه کوچک آن را توسط کدهای زیر بسازیم

     string filename = FileUpload1.FileName;
            //ذخیره تصویر با اندازه اصلی
            FileUpload1.SaveAs(Server.MapPath("/Images/Image/"+filename));

            //تغییر سایز و ذخیره
            ImageResizer img=new ImageResizer();
            img.Resize(Server.MapPath("/Images/Image/" + filename), Server.MapPath("/Images/Thumb/" + filename));

            imageUp.ImageUrl = "/Images/Image/" + filename;
            imgThumb.ImageUrl = "/Images/Thumb/" + filename;

 

 

نمونه هم ضمیمه کردم و کاملا واضح هست

موفق و پیروز باشید

فایل های ضمیمه

ایمان مدائنی

نویسنده 1299 مقاله در برنامه نویسان

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

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید