【C#】图片按照规定尺寸和大小保存

思路分析:

  1. 获得上传的图片
  2. 将图片保存
  3. 按照要求的尺寸重新绘制图片
  4. 保存新的图片
  5. 删除原图

代码:

 public ActionResult ImageUploader(string id, string path, string route, HttpPostedFileBase file)
        {
            if (Request.Files.Count == 0)
            {
                return FailedJsonObject(message: "保存失败");
            }
            //图片的url
			var url= "http://localhost:8088"; 
            //图片保存的物理地址
            path = Path.Combine("E:" "article", "video");
            //判断地址是否存在,如果不存在创建该地址
            if (!Directory.Exists(path))
                Directory.CreateDirectory(path);
            //获得文件扩展名 
            var extension = Path.GetExtension(file.FileName);
            //随机生成文件名称
            var name = Guid.NewGuid().ToString("N");
             //生成完成文件名称,带扩展
            var oriFileNameTemp =name+"_ori" + extension; 
            //新图片名称,随便命名
            var newExt = "_420x280" + extension;
            //生成文件完整路径
            var filename = Path.Combine(path, oriFileNameTemp);
            //生成图片的url
            var str4 = url + name+newExt;
            //保存原图
            file.SaveAs(filename);
            //重新绘制图片,设置尺寸
            CutImage(filename, 420, 280, newExt, file);
            System.IO.File.Delete(filename);
            return SuccessJsonObject(str4);
        }
public ActionResult CutImage(string oriUrl,int width,int height,string name, HttpPostedFileBase file)
        {           
            //主要是为了后面拼接新图的地址
            var path = oriUrl.Substring(0, oriUrl.LastIndexOf("_", StringComparison.OrdinalIgnoreCase));
            //原图
            var bitmap = new Bitmap(oriUrl);
            //目标图
            var destBitmap = new Bitmap(width, height);
            //矩形容器
            var destRect = new Rectangle(0, 0, width, height);
            //创建绘制对象
            var g = Graphics.FromImage(destBitmap);
            //拼接新图的地址
            var imgPath = path + name;          
            try
            {
                g.InterpolationMode = InterpolationMode.HighQualityBicubic;
                g.DrawImage(bitmap, destRect);//绘制
                destBitmap.Save(imgPath);
            }
            catch (Exception e)
            {
                return FailedJsonObject(message: "头像保存失败");
            }
            finally
            {
                g.Dispose();//释放
                bitmap.Dispose();//释放  
                destBitmap.Dispose();
            }        
            //*****结束缩放
            return SuccessJsonObject();
        }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值