mSchool_Picture m = new mSchool_Picture();m.Name = tbxName.Text;m.PicUrl = SavePicture(fupload, "schoolpic/", 700, 0);//直接调用方法,这里制定700就是固定宽度,高度自动调整
    /// <summary>/// 通过FileUpload上传图片并压缩图片大小/// 四各形式:1)指定高 按比例缩放; 2)指定宽 按比例缩放; 3)不缩放; 4)指定宽高裁剪(不会变形)./// </summary>/// <param name="fu">FileUpload对象</param>/// <param name="file">文件完整路径Path</param>/// <param name="width">图片压缩后的宽度</param>/// <param name="height">图片压缩后的高度</param>/// <returns>返回文件存储的完整路径</returns>public static string SavePicture(FileUpload fu, string file, int width, int height){Random myRd = new Random();string prefix = System.IO.Path.GetExtension(fu.FileName).ToLower();string fileName = "";if (prefix.Equals(".jpg") || prefix.Equals(".gif") || prefix.Equals(".jpeg") || prefix.Equals(".pjpeg") || prefix.Equals(".png") || prefix.Equals(".bmp")){string strFileName = DateTime.Now.ToString("yyyyMMddHHmmss") + myRd.Next(1000) + prefix;string name = System.Web.HttpContext.Current.Server.MapPath(file + strFileName);fileName = HttpContext.Current.Server.MapPath(file);string filepath = HttpContext.Current.Server.MapPath("/");try{//获取上传图片的大小Stream PicStream = fu.PostedFile.InputStream;if (width == 0 && height != 0)//指定高 按比例缩放{MakeThumbnail(PicStream, fileName +  strFileName, width, height, "H", prefix);}else if (width != 0 && height == 0)//指定宽 按比例缩放{MakeThumbnail(PicStream, fileName +  strFileName, width, height, "W", prefix);}else if (width == 0 && height == 0)//不缩放{fu.SaveAs(fileName +  strFileName);}else//指定宽高裁剪(不会变形){MakeThumbnail(PicStream, fileName + strFileName, width, height, "Cut", prefix);}//返回图片保存的路径return file + strFileName;}catch{return null;}}else{return null;}}/// <summary>/// 生成缩略图/// </summary>/// <param name="originalImagePath">源图路径(物理路径)</param>/// <param name="thumbnailPath">缩略图路径(物理路径)</param>/// <param name="width">缩略图宽度</param>/// <param name="height">缩略图高度</param>/// <param name="mode">生成缩略图的方式</param>private static void MakeThumbnail(Stream PicStream, string thumbnailPath, int width, int height, string mode, string PicExtension){System.Drawing.Image originalImage = System.Drawing.Image.FromStream(PicStream);int towidth = width;int toheight = height;int x = 0;int y = 0;int ow = originalImage.Width;int oh = originalImage.Height;switch (mode) {case "HW"://指定高宽缩放(可能变形) break;case "W"://指定宽,高按比例 toheight = originalImage.Height * width / originalImage.Width;break;case "H"://指定高,宽按比例towidth = originalImage.Width * height / originalImage.Height;break;case "Cut"://指定高宽裁减(不变形) if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight){oh = originalImage.Height;ow = originalImage.Height * towidth / toheight;y = 0;x = (originalImage.Width - ow) / 2;}else{ow = originalImage.Width;oh = originalImage.Width * height / towidth;x = 0;y = (originalImage.Height - oh) / 2;}break;default:break;}//新建一个bmp图片System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);//新建一个画板System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);//设置高质量插值法g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;//设置高质量,低速度呈现平滑程度  昆明卓联科技(网站、软件开发)g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;//清空画布并以透明背景色填充g.Clear(System.Drawing.Color.Transparent);//在指定位置并且按指定大小绘制原图片的指定部分g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight),new System.Drawing.Rectangle(x, y, ow, oh),System.Drawing.GraphicsUnit.Pixel);try{//根据原来的图片格式,保存为原图片格式switch (PicExtension.ToLower()){case "jpg"://以jpg格式保存缩略图bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);break;case "jpeg":bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);break;case "pjpeg":bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);break;case "gif":bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Gif);break;case "bmp":bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Bmp);break;case "png":bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Png);break;default:bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);break;} }catch (System.Exception e){throw e;}finally{originalImage.Dispose();bitmap.Dispose();g.Dispose();}}

asp.net 上传图片,自动压缩裁剪图片。相关推荐

  1. 自动批量裁剪图片的工具有哪些?这些软件你值得拥有

      小伙伴平时在处理图片的时候,发现只需要应用图片的某个区域,你们会怎么做呢?试想一下,如果将图片不需要的部分打码,可能会影响图片整体的美观.我的建议是,将图片需要的部分裁剪出来,这样也可以得到图片的 ...

  2. thinkphp上传图片自动压缩问题

    thinkphp上传图片后由于图片较大需要剪切,但是由于大部分浏览器阻挡剪切弹出窗口造成无法剪切 故使用thinkphp的生成缩略图的功能,上传的同时直接生成缩略图并覆盖原图,这样就可以自定义上传图片 ...

  3. asp.net上传图片自动生成缩略图功能代码

    if (FileUpload1.FileName.ToString() == "") { Label3.Text = "请选择图片!"; } else { Bo ...

  4. 移动端拍照上传图片之后压缩以及图片旋转问题

    一.问题 针对旧项目翻新,旧的项目是使用lrz(官网)插件压缩图片,17年的项目了使用原生js写的,原项目上传拍照图片不会有旋转的问题,要翻成vue+webpack,同样使用lrz压缩图片时在部分小米 ...

  5. 关于asp.net上传图片自动生成缩略图

    /// <summary>     /// 生成缩略图     /// </summary>     /// <param name="fileName&quo ...

  6. asp.net中上传图片并生成小图片,自动添加水印的代码 .

    asp.net中上传图片并生成小图片,自动添加水印的代码 分类: .Net(C#) 2010-03-22 15:28 242人阅读 评论(0) 收藏 举报 /// 上传图片生成缩略图及水印 (来自:h ...

  7. ios 上传图片失败 小程序_小程序图片自动压缩配置

    问题 在我现在负责的小程序中,每次ui变更都需要引入新的图片,为了控制小程序体积,都需要先把图片压缩了再放到项目中,但是每次都要手动压缩一次,太麻烦了.所以我想能否在项目加入图片的时候,自动的对加入的 ...

  8. php 如何导出图片分辨率,PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例...

    本文实例讲述了PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类.分享给大家供大家参考,具体如下: class AutoImage{ private $image; public funct ...

  9. js 裁剪图片压缩并且上传 图片

    今天接到一个比较懒的后台的要求:后台要求在裁剪图片的同时,根据文件大小来按不同比例压缩图片. 页面代码 <!--** * *----------Created by 黄伟峰 on 2018/6/ ...

最新文章

  1. 计算机专业毕业文案,我们毕业啦!|今天,没有文案
  2. 什么原因导致挖掘机老自动熄火憋车熄火?
  3. Mysql 中获取刚插入的自增长id的值
  4. docker 每次都得source /etc/profile以及如何查看Docker容器环境变量、向容器传递环境变量
  5. 就掌握了成功的C++,那么信息从何而来
  6. cocos2dx迷你地图
  7. 为什么在idea没有preview_设计学研究的idea从哪里来?
  8. (一)跟我一起玩Linux网络服务:DNS服务——BIND(/etc/named.conf、/var/named)设置实现和解释...
  9. WP7 : FrameworkDispatcher.Update has not been called when recording audio(wp7 录音)
  10. 项目管理文档目录结构
  11. iozone使用简介
  12. 用友-凭证打印行数如何调整
  13. sublime补全java代码快捷键_Sublime快捷键
  14. 蓝牙技术|蓝牙音频LE Audio的技术特点
  15. MATLAB机器人工具箱2-机器人模型建立
  16. 计算机语言phal语言,phalapi
  17. 2022年,Python 编程需要养成这 9 个好习惯
  18. 最小生成树-Kruskal和Prim-JAVA代码
  19. 额温枪大揭秘-你的额温枪为什么测不准
  20. 腾讯企业邮箱HTTPS设置

热门文章

  1. 已报参加2021阿里云峰会—开发者大会,29号有组队的吗?
  2. 口碑最好的国产蓝牙耳机有哪些?国产蓝牙耳机品牌排行榜前十名
  3. 2014-9-4 技术创业分享汇
  4. 用python画耳朵_用Python画个可爱的小猪佩奇
  5. Nodejs入门学习,nodejs web开发入门,npm、express、socket配置安装、nodejs聊天室开发
  6. 《做最好的员工》第二章:好员工擅长合作
  7. 手机里的便签的内容怎么迁移到另一个手机里的便签里
  8. cocos creator个人笔记-切换场景闪退(龙骨问题)
  9. java实现第六届蓝桥杯循环节长度
  10. GitHub Actions 持续集成 - 1. 自动生成 Release 内容