asp.net 上传图片,自动压缩裁剪图片。
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 上传图片,自动压缩裁剪图片。相关推荐
- 自动批量裁剪图片的工具有哪些?这些软件你值得拥有
小伙伴平时在处理图片的时候,发现只需要应用图片的某个区域,你们会怎么做呢?试想一下,如果将图片不需要的部分打码,可能会影响图片整体的美观.我的建议是,将图片需要的部分裁剪出来,这样也可以得到图片的 ...
- thinkphp上传图片自动压缩问题
thinkphp上传图片后由于图片较大需要剪切,但是由于大部分浏览器阻挡剪切弹出窗口造成无法剪切 故使用thinkphp的生成缩略图的功能,上传的同时直接生成缩略图并覆盖原图,这样就可以自定义上传图片 ...
- asp.net上传图片自动生成缩略图功能代码
if (FileUpload1.FileName.ToString() == "") { Label3.Text = "请选择图片!"; } else { Bo ...
- 移动端拍照上传图片之后压缩以及图片旋转问题
一.问题 针对旧项目翻新,旧的项目是使用lrz(官网)插件压缩图片,17年的项目了使用原生js写的,原项目上传拍照图片不会有旋转的问题,要翻成vue+webpack,同样使用lrz压缩图片时在部分小米 ...
- 关于asp.net上传图片自动生成缩略图
/// <summary> /// 生成缩略图 /// </summary> /// <param name="fileName&quo ...
- asp.net中上传图片并生成小图片,自动添加水印的代码 .
asp.net中上传图片并生成小图片,自动添加水印的代码 分类: .Net(C#) 2010-03-22 15:28 242人阅读 评论(0) 收藏 举报 /// 上传图片生成缩略图及水印 (来自:h ...
- ios 上传图片失败 小程序_小程序图片自动压缩配置
问题 在我现在负责的小程序中,每次ui变更都需要引入新的图片,为了控制小程序体积,都需要先把图片压缩了再放到项目中,但是每次都要手动压缩一次,太麻烦了.所以我想能否在项目加入图片的时候,自动的对加入的 ...
- php 如何导出图片分辨率,PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例...
本文实例讲述了PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类.分享给大家供大家参考,具体如下: class AutoImage{ private $image; public funct ...
- js 裁剪图片压缩并且上传 图片
今天接到一个比较懒的后台的要求:后台要求在裁剪图片的同时,根据文件大小来按不同比例压缩图片. 页面代码 <!--** * *----------Created by 黄伟峰 on 2018/6/ ...
最新文章
- 计算机专业毕业文案,我们毕业啦!|今天,没有文案
- 什么原因导致挖掘机老自动熄火憋车熄火?
- Mysql 中获取刚插入的自增长id的值
- docker 每次都得source /etc/profile以及如何查看Docker容器环境变量、向容器传递环境变量
- 就掌握了成功的C++,那么信息从何而来
- cocos2dx迷你地图
- 为什么在idea没有preview_设计学研究的idea从哪里来?
- (一)跟我一起玩Linux网络服务:DNS服务——BIND(/etc/named.conf、/var/named)设置实现和解释...
- WP7 : FrameworkDispatcher.Update has not been called when recording audio(wp7 录音)
- 项目管理文档目录结构
- iozone使用简介
- 用友-凭证打印行数如何调整
- sublime补全java代码快捷键_Sublime快捷键
- 蓝牙技术|蓝牙音频LE Audio的技术特点
- MATLAB机器人工具箱2-机器人模型建立
- 计算机语言phal语言,phalapi
- 2022年,Python 编程需要养成这 9 个好习惯
- 最小生成树-Kruskal和Prim-JAVA代码
- 额温枪大揭秘-你的额温枪为什么测不准
- 腾讯企业邮箱HTTPS设置
热门文章
- 已报参加2021阿里云峰会—开发者大会,29号有组队的吗?
- 口碑最好的国产蓝牙耳机有哪些?国产蓝牙耳机品牌排行榜前十名
- 2014-9-4 技术创业分享汇
- 用python画耳朵_用Python画个可爱的小猪佩奇
- Nodejs入门学习,nodejs web开发入门,npm、express、socket配置安装、nodejs聊天室开发
- 《做最好的员工》第二章:好员工擅长合作
- 手机里的便签的内容怎么迁移到另一个手机里的便签里
- cocos creator个人笔记-切换场景闪退(龙骨问题)
- java实现第六届蓝桥杯循环节长度
- GitHub Actions 持续集成 - 1. 自动生成 Release 内容