#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

  

croppic 图片裁剪的更多相关文章

  1. Croppic – 免费开源的 jQuery 图片裁剪插件

    Croppic 这款开源的 jQuery 图片裁剪插件能够满足网站开发人员各种不同的使用需要.只需要简单的上传图片,就可以实现你想要的图像缩放和裁剪功能.因为使用了 HTML5 FormData  对 ...

  2. 5 款最新的 jQuery 图片裁剪插件

    这篇文章主要介绍最新的 5 款 jQuery 图片裁剪插件,可以帮助你轻松的实现你网站需要的图像裁剪功能. Cropit Cropit 是一个 jQuery 插件,支持图像裁剪和缩放功能.Cropit ...

  3. iOS常见用户头像的圆形图片裁剪常见的几种方法

    在开发中,基本上APP的用户头像的处理都需要把用户所上传的方形图片,处理为圆形图片.在这里就总结三种常见的处理圆形图片的方法. 1.使用位图上下文 2.使用UIView的layer进行处理 3.使用r ...

  4. Cropper – 简单的 jQuery 图片裁剪插件

    Cropper 是一个简单的 jQuery 图像裁剪插件.它支持选项,方法,事件,触摸(移动),缩放,旋转.输出的裁剪数据基于原始图像大小,这样你就可以用它们来直接裁剪图像. 如果你尝试裁剪跨域图像, ...

  5. 自己积累的一些Emgu CV代码(主要有图片格式转换,图片裁剪,图片翻转,图片旋转和图片平移等功能)

    using System; using System.Drawing; using Emgu.CV; using Emgu.CV.CvEnum; using Emgu.CV.Structure; na ...

  6. web开发实战--图片裁剪和上传

    前言: 最近的开发中, 有一个上传头像的任务. 由于头像本身的特殊性, 其一般流程为选择图片, 编辑裁剪区域, 再继而上传图片操作. 看似简单的东西, 实则是挺麻烦的一件事. 借助这次开发机会, 来具 ...

  7. PHP图片裁剪_图片缩放_PHP生成缩略图

    在制作网页过程中,为了排版整齐美观,对网页中的图片处理成固定大小尺寸的图片,或是要截去图片边角中含有水印的图片,对于图片量多,每天更新大量图,靠人工PS处理是不现实的,那么有没有自动处理图片的程序了! ...

  8. Android大图片裁剪终极解决方案(上:原理分析)

    转载声明:Ryan的博客文章欢迎您的转载,但在转载的同时,请注明文章的来源出处,不胜感激! :-)  http://my.oschina.net/ryanhoo/blog/86842 约几个月前,我正 ...

  9. apiCloud中图片裁剪模块FNImageClip的使用

    思路 1.获取需裁剪图片的地址 2.跳转到裁剪页面 3.裁剪成功返回新图片地址 4.替换原有图片地址 增加修饰和事件 str += '<li class="tu image" ...

随机推荐

  1. Eclipse的DDMS File Explorer无法进入data目录解决方案

    进入data目录需要root权限.所以,你的手机要有root才可以.然后做以下步骤就可以了 1.cmd进入platform-tools目录 2.adb shell 3.su(这里要看手机有没有请求ro ...

  2. Qt on_pushButton_clicked()的用法【worldsing笔记】

    在Qt里按钮控件默认对应一个on_pushButton_clicked()成员,如果想用点击信号,在代码中实现on_pushButton_clicked()成员即可. 最近看了一段代码,里面并没有co ...

  3. Java远程方法调用(RMI)

    Java RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法.可以用此方 ...

  4. Android 图片加载[常见开源项目汇总]

    该文主要是讲一下目前有哪些使用比较多的 图片加载开源项目,并简单介绍该如果使用 以及各开源项目之间有什么区别, 我们该如何去选择适合的开源项目应用到我们的项目中? 一.Android-Universa ...

  5. spring aop 的一个demo(未完,待完善)

    假设我们有这样的一个场景 : 对于一个类的众多方法,有些方法需要从缓存读取数据,有些则需要直接从数据库读取数据.怎样实现呢? 实现方案有多种.下面我说下常见的几种实现方案 : 1.直接采用spring ...

  6. Ubuntu下非常给力的下载工具

    Windows下的下载工具--迅雷,之所以下载速度快,乃是它能搜索资源.为己所用,而不是仅仅从原始地址这单一资源处下载. Ubuntu下也有类似的工具,那就是aira2. aira2是一个命令行下载工 ...

  7. sphinx全文检索之PHP使用(转)

    基础 数据结构: CREATE TABLE email ( emailid mediumint(8) unsigned NOT NULL auto_increment COMMENT '邮件id', ...

  8. [Effective C++ --016]成对使用New和Delete时要采用相同形式

    这一节比较简单,可以总结为以下: std::string *stringPtr1 = new std::string; std::]; .. delete stringPtr1; // delete ...

  9. 文件和目录之chown、fchown和lchown函数

    下面几个chown函数可用于更改文件的用户ID和组ID. #include <unistd.h> int chown( const char *pathname, uid_t owner, ...

  10. devenv.exe - Assert Failure visual studio 2010

    安装完成devexpress后启动vs提示 devenv.exe - assert failure  第一种在博客园找到的解决方案: 原因是机器上安装了framework 4.5 和4.5中文包,卸载 ...