C#结合imgareaselect生成缩略图并截取图片
来源:互联网 发布:lol全皮肤软件 编辑:程序博客网 时间:2024/04/19 20:17
</pre><pre name="code" class="csharp">-----前端html<script type="text/javascript" src="@Url.Content("~/scripts/jquery-1.7.1.min.js")"></script><link rel="stylesheet" type="text/css" href="@Url.Content("~/contentpc/css/imgareaselect-default.css")"/><div class="popup" id="cutDiv"> @using (Html.BeginForm("avgupload", "user", FormMethod.Post, new { id = "form2" })) { <dl> <dt>头像截取<a href="###" class="btn_close transition_a" id="Cut_close">关闭</a></dt> <div style="background-color: #f6f6f6"> <dd> <div class="l_560" style="width: 600px;"> <div style="float: left; min-width: 400px; text-align: center"> <div style="font-size: 16px; color: #888; text-align: center"> 鼠标划拉图片选择区域↖↘</div> <img alt="" id="oldAvg" width="360" height="360" src="@(string.IsNullOrEmpty(Model.Avg) ? Url.Content("~/contentpc/images/tool/photo_80.png") : Url.Content("~/content/accessory/" + Model.Avg))"/> </div> <div style="float: right;"> <div style="font-size: 16px; color: #888; text-align: center"> 预览</div> <div id="preview" style="width: 180px; height: 180px; overflow: hidden;"> <img src="@(string.IsNullOrEmpty(Model.Avg) ? Url.Content("~/contentpc/images/tool/photo_80.png") : Url.Content("~/content/accessory/" + Model.Avg))" > </div> <span style="text-align: center">尺寸:180 x 180</span> <input type="hidden" name="x1" id="x1" value="0" /> <input type="hidden" name="y1" id="y1" value="0" /> <input type="hidden" name="x2" id="x2" value="180" /> <input type="hidden" name="y2" id="y2" value="180" /> </div> </div> <br /> <input type="submit" value="保存" class="blue_btn transition_a round_s" style="width: 100px; padding: 0.5em 0 0 0" /> </dd> </div> </dl> }</div>------------前端脚本<script>$(document).ready(function () { $('#oldAvg').imgAreaSelect({ aspectRatio: '1:1', fadeSpeed: 1200, autoHide: true, show: false, handles: false, onSelectChange: preview }); function preview(img, selection) { if (!selection.width || !selection.height) return; $('input[name="x1"]').val(selection.x1); $('input[name="y1"]').val(selection.y1); $('input[name="x2"]').val(selection.x2); $('input[name="y2"]').val(selection.y2); var scaleX = 180 / selection.width; var scaleY = 180 / selection.height; $('#preview img').css({ width: Math.round(scaleX * 360), height: Math.round(scaleY * 360), marginLeft: -Math.round(scaleX * selection.x1), marginTop: -Math.round(scaleY * selection.y1) }); }</script>------------服务器端[HttpPost] public ActionResult AvgUpload() { TUser model = System.Web.HttpContext.Current.Session["LoginUser"] as TUser; TUser user = TUserRepository.GetById(model.ID); try { int x1 = Convert.ToInt32(Request["x1"]); int y1 = Convert.ToInt32(Request["y1"]); int x2 = Convert.ToInt32(Request["x2"]); int y2 = Convert.ToInt32(Request["y2"]); int width = x2 - x1; int height = y2 - y1; string SavePath = System.Web.HttpContext.Current.Server.MapPath("~/Content/accessory/");//获取图片存放路径 string oldAvgPath = SavePath + user.Avg;//获取原头像图片 string Thumbnail = Guid.NewGuid().ToString("N") + Path.GetExtension(user.Avg); string ThumbnailPath = SavePath + Thumbnail; string newAvg = Guid.NewGuid().ToString("N") + Path.GetExtension(user.Avg);//生成新的图片 string newAvgPath = SavePath + newAvg; if (!string.IsNullOrEmpty(user.Avg)) { //-------------------------------------------------------------------原始图片 System.Drawing.Image avgImage = Image.FromFile(oldAvgPath); //System.Drawing.Image ChangeImage = sourceImage.GetThumbnailImage(360, 360, () => { return false; }, System.IntPtr.Zero); int AvgWidth = avgImage.Width; int AvgHeight = avgImage.Height; //生成缩略图 SaveThumbnail(avgImage, 360, 360, ThumbnailPath, user.Avg, Path.GetExtension(user.Avg), AvgWidth, AvgHeight); System.Drawing.Image sourceImage = Image.FromFile(ThumbnailPath); //-------------------------------------------------------------------裁剪的区域 Rectangle fromR = new Rectangle(x1, y1, width, height); //-------------------------------------------------------------------裁剪出来的图要放在画布的哪个位置 Rectangle toR = new Rectangle(0, 0, width, height); //-------------------------------------------------------------------要当画布的Bitmap物件 System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(width, height); //-------------------------------------------------------------------产生画布 System.Drawing.Graphics g = Graphics.FromImage(bitmap); //-------------------------------------------------------------------清空画布,背景白色 g.Clear(Color.White); //-------------------------------------------------------------------剪裁 g.DrawImage(sourceImage, toR, fromR, GraphicsUnit.Pixel); //裁剪完成,存盘 bitmap.Save(newAvgPath, ImageFormat.Jpeg); //释放资源 g.Dispose(); bitmap.Dispose(); sourceImage.Dispose(); avgImage.Dispose(); //ChangeImage.Dispose(); } user.Avg = newAvg; TUserRepository.Update(user); unitOfWork.Commit(); System.IO.File.Delete(oldAvgPath);//把原始档删除 System.IO.File.Delete(ThumbnailPath);//把原始档删除 return RedirectToAction("avgindex", "user"); } catch { return Content("<script>alert('系统出错,请重试!');window.location.href='/user/avgindex'</script>"); } } private void SaveThumbnail(Image originBitmap, int Imgwidth, int Imgheight, string physicalPath, string filename, string extension, int initWidth, int initHeight) { using (var newImage = new Bitmap(Imgwidth, Imgheight)) { using (var graphic = GetGraphic(originBitmap, newImage)) { graphic.DrawImage(originBitmap, new Rectangle(0, 0, 360, 360), new Rectangle(0, 0, initWidth, initHeight), GraphicsUnit.Pixel); using (var encoderParameters = new EncoderParameters(1)) { encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L); newImage.Save(physicalPath, ImageCodecInfo.GetImageEncoders() .Where(x => x.FilenameExtension.Contains(extension.ToUpperInvariant())) .FirstOrDefault(), encoderParameters); } } } } private Graphics GetGraphic(Image originImage, Bitmap newImage) { newImage.SetResolution(originImage.HorizontalResolution, originImage.VerticalResolution); var graphic = Graphics.FromImage(newImage); graphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; graphic.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; graphic.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; graphic.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; graphic.Clear(Color.White); return graphic; }
0 0
- C#结合imgareaselect生成缩略图并截取图片
- C#上传图片并按比例生成缩略图
- C# 生成图片缩略图
- C# 2005 webform上传图片并生成缩略图
- C#上传图片并按比例生成缩略图收藏
- C# 2005 webform上传图片并生成缩略图
- C#上传并保存图片、加水印、生成缩略图
- 上传图片并生成缩略图
- 上传图片并生成缩略图
- 上传图片并生成缩略图
- 图片上传并生成缩略图
- 上传图片并生成缩略图
- 上传图片并生成缩略图
- 上传图片并生成缩略图
- 上传图片并生成缩略图
- 上传图片并生成缩略图
- 上传图片并生成缩略图
- C#上传图片生成缩略图
- php ajax图片上传
- 网卡的组成工作原理
- 不让布局被输入法顶上去解决方案
- Spring mvc的国际化显示
- XCode8模拟器崩溃解决办法
- C#结合imgareaselect生成缩略图并截取图片
- 关于Hive优化的四种方法总结
- 1【caffe-Windows】caffe+VS2013+Windows无GPU快速配置教程
- 【bzoj2763】[JLOI2011]飞行路线
- oracle10G/11G官方下载地址集合 直接迅雷下载
- Metasploit曝远程代码执行漏洞:别惹我,我疯起来连自己都黑
- 位操作实现加减乘除
- Android Studio SVN使用和VisualSVN-Server配置(图解)
- Spark性能优化(1)——序列化、内存、并行度、数据存储格式、Shuffle