PDA

View Full Version : سوال: یک مشکل عجیب در تغییر سایز تصویر هنگام آپلود



reza4359
یک شنبه 27 آذر 1390, 18:06 عصر
سلام دوستان من برای تغییر سایز تصویر هنگام آپلود از این متد استفاده میکنم و تصویر رو به همون اندازه تغییر میده و لی یه گوشه تصویر رو خالی نشون میده دلیلش چیه؟
متد:
public System.Drawing.Image ResizeImage(FileUpload f, Size newSize)
{
string fe = System.IO.Path.GetExtension(f.FileName).ToLower();
if ((fe != ".jpg") & (fe != ".jpeg") & (fe != ".gif") & (fe != ".png"))
throw new System.Exception("File is not valid");
System.Drawing.Image mg = System.Drawing.Image.FromStream(f.FileContent);
double ratio = 0d;
double myThumbWidth = 0d;
double myThumbHeight = 0d;
int x = 0;
int y = 0;
Bitmap bp;
if ((mg.Width / Convert.ToDouble(newSize.Width)) > (mg.Height /
Convert.ToDouble(newSize.Height)))
ratio = Convert.ToDouble(mg.Width) / Convert.ToDouble(newSize.Width);
else
ratio = Convert.ToDouble(mg.Height) / Convert.ToDouble(newSize.Height);
myThumbHeight = Math.Ceiling(mg.Height / ratio);
myThumbWidth = Math.Ceiling(mg.Width / ratio);
Size thumbSize = new Size((int)myThumbWidth, (int)myThumbHeight);
bp = new Bitmap(newSize.Width, newSize.Height);
x = (newSize.Width - thumbSize.Width) / 2;
y = (newSize.Height - thumbSize.Height);
Graphics g = Graphics.FromImage(bp);
g.SmoothingMode = SmoothingMode.HighSpeed;
g.InterpolationMode = InterpolationMode.Low;
g.PixelOffsetMode = PixelOffsetMode.HighSpeed;
Rectangle rect = new Rectangle(x, y, thumbSize.Width, thumbSize.Height);
g.DrawImage(mg, rect, 0, 0, mg.Width, mg.Height, GraphicsUnit.Pixel);
return bp;
}
فراخوانی:
string filename = "images.jpeg";
if (FileUpload1.HasFile)
{
filename = FileUpload1.FileName;

FileUpload1.SaveAs(Server.MapPath("~\\img\\") + filename);
string fName = FileUpload1.FileName;
fName = fName.Substring(fName.LastIndexOf("~/img/") + 1);
System.Drawing.Image mg = ResizeImage(FileUpload1, new Size(550, 220));
mg.Save(Server.MapPath("~/img/" + fName));



}
تصویری که آپلود میکنه:
http://1.vped.comule.com/images/40e0a2a2f466.jpg