#region 3.1.3 保存裁剪后的图片方法 +ContentResult TemplateCropImg()
/// <summary>
/// 保存裁剪后的图片方法
/// </summary>
/// <returns></returns>
[HttpPost]
public ContentResult TemplateCropImg()
{
string imageUrl = Request.Form["imgUrl"]; //要剪裁图片的地址 int imageWidth = Convert.ToInt32(Request.Form["imgInitW"]); //原图宽度
int imageHeight = Convert.ToInt32(Request.Form["imgInitH"]); //原图高度 int imageW = Convert.ToInt32(Math.Round(Convert.ToDouble(Request.Form["imgW"]))); //缩放后宽度
int imageH = Convert.ToInt32(Math.Round(Convert.ToDouble(Request.Form["imgH"]))); //缩放后高度 int cropWidth = Convert.ToInt32(Request.Form["cropW"]); //剪裁宽度
int cropHeight = Convert.ToInt32(Request.Form["cropH"]); //剪裁高度 int x = Convert.ToInt32(Request.Form["imgX1"]); //剪裁时X坐标
int y = Convert.ToInt32(Request.Form["imgY1"]); //剪裁时Y坐标 string returnData = string.Empty; //原始图片
using (Image image = Image.FromFile(Server.MapPath(imageUrl)))
{
//将图片缩放
Bitmap bitmap = new Bitmap(imageW, imageH);
Graphics graph = Graphics.FromImage(bitmap); //设置画布的描绘质量
graph.CompositingQuality = CompositingQuality.HighQuality;
graph.SmoothingMode = SmoothingMode.HighQuality;
graph.InterpolationMode = InterpolationMode.HighQualityBicubic; graph.DrawImage(image, new Rectangle(0, 0, imageW, imageH), new Rectangle(0, 0, imageWidth, imageHeight), GraphicsUnit.Pixel); MemoryStream memoryStream = new MemoryStream();
bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Bmp); //缩放后的图片
Image zoomImage = Image.FromStream(memoryStream); //将缩放后的图片进行裁剪
bitmap = new Bitmap(cropWidth, cropHeight);
graph = Graphics.FromImage(bitmap); //清空画布并以透明背景色填充
graph.Clear(Color.Transparent); graph.DrawImage(zoomImage, 0, 0, new Rectangle(x, y, cropWidth, cropHeight), GraphicsUnit.Pixel); //得到裁剪后的图片
string filePath = System.Configuration.ConfigurationManager.AppSettings["UploadDir"] + DateTime.Now.ToString("yyyyMMdd") + "/";
if (!Directory.Exists(Server.MapPath(filePath)))
{
Directory.CreateDirectory(Server.MapPath(filePath));
} string fileName = filePath + DateTime.Now.Ticks + ".png";
bitmap.Save(Server.MapPath(fileName), System.Drawing.Imaging.ImageFormat.Png); graph.Dispose();
bitmap.Dispose(); returnData = "{'status':'success','url':'" + fileName + "'}";
} //删除之前上传的图片
System.IO.File.Delete(Server.MapPath(imageUrl)); return Content(returnData);
}
#endregion

  

最新文章

  1. Javascript的“上下文”(context)
  2. Linux_10个需要了解的Linux网络和监控命令(转)
  3. 【转】段错误调试神器 - Core Dump详解
  4. 下载app后自动安装程序
  5. 如何导出FlashFXP的站点配置文件
  6. ios第三方库和工具类
  7. TFS - 使用微软测试管理器实现跨团队项目的测试用例管理
  8. editplus 常用快捷键汇总 大小写代码折叠
  9. ExtJS4.x 开发环境搭建
  10. 面试题_76_to_81_Java 最佳实践的面试问题
  11. This transaction has been rolled back, rather than only the current.
  12. rsyslog安装
  13. mysql 分区信息查看
  14. Appium for Windows环境搭建
  15. BZOJ 3160: 万径人踪灭 [fft manacher]
  16. [LeetCode] Convert BST to Greater Tree 将二叉搜索树BST转为较大树
  17. 虚拟机网络连接方式导致的p地址为10.0.2.*的问题
  18. jumpserver篇--安装(高可用性 mariadb+haproxy)
  19. Mysql数据库性能优化(一)
  20. English trip 自习内容 句子结构和成分

热门文章

  1. Activity的lanuchmode
  2. DTD - Attributes
  3. soliworks三维机柜布局(一)创建设备型号库
  4. FormsAuthentication.GetRedirectUrl 方法
  5. 强大的代码生成工具MyGeneration
  6. Oracle 监听器无法启动(TNS-12555,TNS-12560,TNS-00525)
  7. springMVC get请求及其请求地址写法
  8. btrace拓展工具-java应用性能诊断优化利器
  9. 域名的MX设置及校验方法
  10. C++ “读取位置 0x****** 时发生访问冲突”的可能原因