Croppic插件使用介绍-asp.net
具体的参数使用和基本使用方式请看:http://www.uedsc.com/croppic-api.html
需要说明的几点:
1.支持两种上传方式:
(1)先将原图上传至服务器,然后再次将切图信息传给服务器。(两次请求,需要提供uploadUrl和cropUrl两个)
(2)直接将图片通过Data URI scheme的方式将图片缓存在浏览器内,用户切图完毕后同切图信息一并发送至服务器。(一次请求,只需要提供cropUrl)
2.如果需要自定义切图的模板大小,需要修改croppic.js文件,修改如下:
然后在你程序使用的页面内灵活给这两个参数赋值就可以了。
3.后台程序处理的代码共享(注:使用了第二种,一次性上传的方式)
前台:
<div id="croppic"></div>
<script type="text/javascript">
@{
if (brand.Type==0)
{
<text>
var my_cropH = 203;
var my_cropW = 282;
</text>
}else {
<text>
var my_cropH = 300;
var my_cropW = 224;
</text>
}
}
var croppicHeaderOptions = {
cropData: {
"Id": '@brand.Id'
},
cropUrl: '/Brand/CutImg',
//customUploadButtonId: 'cropContainerHeaderButton',
modal: false,
processInline: true,
loaderHtml: '<div class="loader bubblingG"><span id="bubblingG_1"></span><span id="bubblingG_2"></span><span id="bubblingG_3"></span></div> ',
onBeforeImgUpload: function () { console.log('onBeforeImgUpload') },
onAfterImgUpload: function () { console.log('onAfterImgUpload') },
onImgDrag: function () { console.log('onImgDrag') },
onImgZoom: function () { console.log('onImgZoom') },
onBeforeImgCrop: function () { console.log('onBeforeImgCrop') },
onAfterImgCrop: function () { console.log('onAfterImgCrop') },
onReset: function () { console.log('onReset') },
onError: function (errormessage) { console.log('onError:' + errormessage) }
}
var croppic = new Croppic('croppic', croppicHeaderOptions);
</script>
后台:
public ActionResult CutImg(int? imgInitW, int? imgInitH, decimal? imgW, decimal? imgH, int? imgY1, int? imgX1, decimal? cropH, decimal? cropW, int? rotation)
{
//保存图片
var displayImageStream = Request["imgUrl"] == null ? null : Request["imgUrl"];
byte[] imgByte = Convert.FromBase64String(displayImageStream.Substring(displayImageStream.IndexOf(",") + 1));
Image oldImage;
using (MemoryStream mstream = new MemoryStream(imgByte, 0, imgByte.Length))
{
oldImage = Image.FromStream(mstream);
if (!oldImage.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg))
{
return Json(new { status = "error", message = "切图出现问题" });
}
}
//构建新的图片
var croppedBitmap = new Bitmap((int)cropW, (int)cropH);
try
{
using (var g = Graphics.FromImage(croppedBitmap))
{
Bitmap bitmap = new Bitmap(oldImage, (int)imgW, (int)imgH);
g.DrawImage(bitmap,
new Rectangle(0, 0, (int)cropW, (int)cropH),
new Rectangle((int)imgX1, (int)imgY1, (int)cropW, (int)cropH), GraphicsUnit.Pixel);
}
}
catch (Exception e)
{
return Json(new { status = "error", message = "internal error cropping the image" });
}
string relativePic = DateTime.Now.ToString("yyyy/MM/dd/") + Guid.NewGuid().ToString() + ".jpg";
string strNewPic = AppDomain.CurrentDomain.BaseDirectory + relativePic;
if (!Directory.Exists(Path.GetDirectoryName(strNewPic)))
Directory.CreateDirectory(Path.GetDirectoryName(strNewPic));
croppedBitmap.Save(strNewPic);
return Json(new { status = "success", url = "../../" + relativePic });
}
学习:https://codeload.github.com/danielbcorreia/croppic-net/zip/master 从这个链接学习了部分代码,感谢。
Croppic插件使用介绍-asp.net的更多相关文章
- 头像截图上传三种方式之一(一个简单易用的flash插件)(asp.net版本)
flash中有版权声明,不适合商业开发.这是官网地址:http://www.hdfu.net/ 本文参考了http://blog.csdn.net/yafei450225664/article/det ...
- 3.介绍ASP.NET Core框架
介绍ASP.NET Core框架 在这篇文章中,我将要向你们简短介绍一下ASP.NET Core 框架.当今社会,当提到软件开发,每个人都是讨论着开源以及跨平台开发.总所周知,微软是以它的基于Wind ...
- ASP.NET 5 已死 - 隆重介绍 ASP.NET Core 1.0 和 .NET Core 1.0
还没正式登场就死了?不能怪我标题党,是大神Scott在他博客上这么说的,我只是翻译了一下. 在1月20号最新的ASP.NET Community Standup视频中,微软aspnet开发组的大帅哥 ...
- 【转】Eclipse插件大全介绍及下载地址
转载地址:http://developer.51cto.com/art/200906/127169.htm 尚未一一验证. eclipse插件大全介绍,以及下载地址 Eclipse及其插件下载网址大全 ...
- Xcode Alcatraz插件管理介绍和使用
Xcode Alcatraz插件管理介绍和使用http://www.jianshu.com/p/7a2484123bf6 1.简介 Alcatraz是一个能帮你管理Xcode插件丶模版及颜色配置的工具 ...
- 详细介绍ASP.NET页面重定向方法
ASP.NET中页面重定向的使用的很频繁,实现方法也有不同,自己也试过几种,现在总结一下. 一.Transfer Execute Redirect重定向方法介绍 1.Server.Transfer方法 ...
- 03_Elasticsearch如何安装以及相关插件的介绍
03_Elasticsearch如何安装以及相关插件的介绍 elasticsearch -d (-d参数是为了让服务后台运行) Elasticsearch 目录结构: 文件夹 作用 /bin 运行El ...
- 图片剪切之Croppic插件
前几天做图片上传时需要进行图片的剪切和缩放,上网查找时找到了这个插件.样式很好看,功能也很OK.但是网上都是php进行后台处理图片的例子,然后只好慢慢琢磨C#的处理.插件地址是:http://www. ...
- Cordova各个插件使用介绍系列(六)—$cordovaDevice获取设备的相关信息
详情请看:Cordova各个插件使用介绍系列(六)—$cordovaDevice获取设备的相关信息 在项目中需要获取到当前设备,例如手机的ID,联网状态,等,然后这个Cordova里有这个插件可以用, ...
随机推荐
- sublime3注册码
TwitterInc User License EA7E 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA12C0 A37081C5 D0316412 4584D136 ...
- [linux]centos7下解决yum install mysql-server没有可用包
第一步:安装从网上下载文件的wget命令 [root@master ~]# yum -y install wget 第二步:下载mysql的repo源 [root@master ~]# wget ht ...
- 【03】json使用
[03]json使用 把 JSON 文本转换为 JavaScript 对象 JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 J ...
- Java基础学习总结(75)——Java反射机制及应用场景
什么是Java反射机制? JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的以及动态调用对象的方法的功能称为 ...
- Android第三方开源SwitchButton
Android第三方开源SwitchButton Android SwitchButton是github上的一个第三方开源项目,其项目主页是:https://github.com/kyleduo/Sw ...
- scrapy的User-Agent中间件、代理IP中间件、cookies设置、多个爬虫自定义settings设置
在scrapy的反爬中,常用的几个配置,简单总结了下: User-Agent中间件: from fake_useragent import UserAgent class RandomUserAgen ...
- java中static学习总结
<<java编程思想>>: 1.static方法就是没有this的方法. 2.在static方法内部非静态方法. 3.在没有创建对象的前提下,可以通过类本身来调用static修 ...
- word分节时,如何让每一节的首页置为奇数页
具体操作,可参考如下图片所示的步骤: 打印时的效果: 备注:目录页为第二小节首页(文档的第二页),整个文档的首页为封面第一页. 打印时,会在首页后自动插入一张空白页:也会在正文(第三页,第三节)前,目 ...
- WebDev.WebServer40.EXE
http://www.cnblogs.com/tong-tong/archive/2013/05/02/3049428.html 大学玩asp.net时就发现VS在Debug时会起一个web服务,这东 ...
- MVC之查询demo
上篇已经说过怎样建立MVC项目.这次主要讲述样例的实现. 其基本的功能就是从数据库中查询一些基本信息. 前边我们已经将实体引入到了项目中,这时Model目录中已经出现了我们建立的newsSystem. ...