PDA

View Full Version : سوال: ذخیره عکس با ابعاد یکسان در سرور



naser_feb8646
یک شنبه 15 اسفند 1389, 22:12 عصر
سلام
دوستان میخواستم ببینم این راهی که میگم منطقی هست یا شما پیشنهاد دیگه ای دارید
من میخوام از طریق فایل آپلود یک عکس رو آپلود کنم اما نمیخوام اندازه عکسهام از یه ابعادی (مثلا 600 در 800) بزرگتر باشه برای اینکه بتونم از طریق کد این عکس رو کوچیک کنم باید اون رو روی سرور ذخیره و بعد از طرق کد نویسی اون رو کوچیک کنم بعد دوباره ذخیره کنم و فایل اصلی رو از رو سرور پاک کنم آیا این روش درسته یا نه؟ایا روش دیگه ای وجود داره؟

amirjalili
دوشنبه 16 اسفند 1389, 11:21 صبح
باید در رویداد مربوط به آپلود عکس متدی مثل متد زیر رو صدا کنید


public static Image Resize(Image image, int width, int height, RotateFlipType rotateFlipType)
{
// clone the Image instance, since we don't want to resize the original Image instance
var rotatedImage = image.Clone() as Image;
rotatedImage.RotateFlip(rotateFlipType);
var newSize = CalculateResizedDimensions(rotatedImage, width, height);

var resizedImage = new Bitmap(newSize.Width, newSize.Height, PixelFormat.Format24bppRgb);
resizedImage.SetResolution(72, 72);

using (var graphics = Graphics.FromImage(resizedImage))
{
// set parameters to create a high-quality thumbnail
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.SmoothingMode = SmoothingMode.AntiAlias;
graphics.CompositingQuality = CompositingQuality.HighQuality;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;

// use an image attribute in order to remove the black/gray border around image after resize
// (most obvious on white images), see this post for more information:
//
using (var attribute = new ImageAttributes())
{
attribute.SetWrapMode(WrapMode.TileFlipXY);

// draws the resized image to the bitmap
graphics.DrawImage(rotatedImage, new Rectangle(new Point(0, 0), newSize), 0, 0, rotatedImage.Width, rotatedImage.Height, GraphicsUnit.Pixel, attribute);
}
}

return resizedImage;
}