Я хочу уменьшить размер изображения перед сохранением в моей веб-папке в mvc4

1

Я хочу уменьшить размер изображения и сохранить уменьшенное изображение в папку с изображениями. Следующее - это то, что я сделал для сохранения изображения, но проблема заключается в том, что изображение не сохраняется в моей папке с изображениями.

КАК СОХРАНИТЬ ИЗОБРАЖЕНИЕ ИЗОБРАЖЕНИЯ В МОЙ ФОТОГРАФИИ ИЗОБРАЖЕНИЯ В MVC4..?

Ниже мой код, чтобы сохранить изображение:

public ActionResult AddProduct(TblProduct ObjProducts)
{
    HttpPostedFileBase File = Request.Files[0]; 
    if (ModelState.IsValid) {

        string filename = Path.GetFileName(File.FileName);
        string targetPath = Server.MapPath("Images/" + filename);             

        ///save file
        string oldImage = File.FileName;
        string NewFileName = ObjProducts.ManualP_Id + ".JPG";
        string pic = System.IO.Path.GetFileName(NewFileName);
        string path = System.IO.Path.Combine(Server.MapPath("~/Images/ProductImg"), NewFileName);
        File.SaveAs(path);                
        ObjProducts.Image =NewFileName;
        ObjProducts.IsActive = true;
        ObjProducts.IsDelete = false;
        ObjProducts.CreatedDate = DateTime.Now;
        db.TblProducts.Add(ObjProducts);
        db.SaveChanges();
        return RedirectToAction("DisplayProduct", "PanelProduct");
    }
    return View();
}
Теги:
model-view-controller
asp.net-mvc
asp.net-mvc-4
asp.net-mvc-3

2 ответа

1

попробуй это

Image img = Image.FromStream(httpPostedFileBase.InputStream, true, true);
 var bitmap = new Bitmap(newWidth,newHeight);
using (Graphics g = Graphics.FromImage(bitmap)) {
    g.SmoothingMode = SmoothingMode.HighQuality;
    g.PixelOffsetMode = PixelOffsetMode.HighQuality;
    g.CompositingQuality = CompositingQuality.HighQuality;
    g.InterpolationMode = InterpolationMode.HighQualityBicubic;
    g.DrawImage(img,
        new Rectangle(0,0,newWidth,newHeight),
        clipRectangle, GraphicsUnit.Pixel);
}
bitmap.Save(path,ImageFormat.Jpeg);
0

вы можете использовать функцию ниже для масштабирования и сжатия изображения до требуемого разрешения:

int Height = 600;
int Width = 800;    
private Image Scale(Image imgPhoto)
    {
        float sourceWidth = imgPhoto.Width;
        float sourceHeight = imgPhoto.Height;
        float destHeight = 0;
        float destWidth = 0;
        int sourceX = 0;
        int sourceY = 0;
        int destX = 0;
        int destY = 0;

        // force resize, might distort image
        if (Width != 0 && Height != 0)
        {
            destWidth = Width;
            destHeight = Height;
        }
        // change size proportially depending on width or height
        else if (Height != 0)
        {
            destWidth = (float)(Height * sourceWidth) / sourceHeight;
            destHeight = Height;
        }
        else
        {
            destWidth = Width;
            destHeight = (float)(sourceHeight * Width / sourceWidth);
        }

        Bitmap bmPhoto = new Bitmap((int)destWidth, (int)destHeight,PixelFormat.Format32bppPArgb);
        bmPhoto.SetResolution(imgPhoto.HorizontalResolution, imgPhoto.VerticalResolution);

        Graphics grPhoto = Graphics.FromImage(bmPhoto);
        grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic;
        grPhoto.DrawImage(imgPhoto,new Rectangle(destX, destY, (int)destWidth, (int)destHeight),
            new Rectangle(sourceX, sourceY, (int)sourceWidth, (int)sourceHeight),GraphicsUnit.Pixel);
        grPhoto.Dispose();
        return bmPhoto;
    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню