具体的参数使用和基本使用方式请看:http://www.uedsc.com/croppic-api.html

需要说明的几点:

1.支持两种上传方式:

(1)先将原图上传至服务器,然后再次将切图信息传给服务器。(两次请求,需要提供uploadUrlcropUrl两个)

(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的更多相关文章

  1. 头像截图上传三种方式之一(一个简单易用的flash插件)(asp.net版本)

    flash中有版权声明,不适合商业开发.这是官网地址:http://www.hdfu.net/ 本文参考了http://blog.csdn.net/yafei450225664/article/det ...

  2. 3.介绍ASP.NET Core框架

    介绍ASP.NET Core框架 在这篇文章中,我将要向你们简短介绍一下ASP.NET Core 框架.当今社会,当提到软件开发,每个人都是讨论着开源以及跨平台开发.总所周知,微软是以它的基于Wind ...

  3. ASP.NET 5 已死 - 隆重介绍 ASP.NET Core 1.0 和 .NET Core 1.0

    还没正式登场就死了?不能怪我标题党,是大神Scott在他博客上这么说的,我只是翻译了一下. 在1月20号最新的ASP.NET Community Standup视频中,微软aspnet开发组的大帅哥 ...

  4. 【转】Eclipse插件大全介绍及下载地址

    转载地址:http://developer.51cto.com/art/200906/127169.htm 尚未一一验证. eclipse插件大全介绍,以及下载地址 Eclipse及其插件下载网址大全 ...

  5. Xcode Alcatraz插件管理介绍和使用

    Xcode Alcatraz插件管理介绍和使用http://www.jianshu.com/p/7a2484123bf6 1.简介 Alcatraz是一个能帮你管理Xcode插件丶模版及颜色配置的工具 ...

  6. 详细介绍ASP.NET页面重定向方法

    ASP.NET中页面重定向的使用的很频繁,实现方法也有不同,自己也试过几种,现在总结一下. 一.Transfer Execute Redirect重定向方法介绍 1.Server.Transfer方法 ...

  7. 03_Elasticsearch如何安装以及相关插件的介绍

    03_Elasticsearch如何安装以及相关插件的介绍 elasticsearch -d (-d参数是为了让服务后台运行) Elasticsearch 目录结构: 文件夹 作用 /bin 运行El ...

  8. 图片剪切之Croppic插件

    前几天做图片上传时需要进行图片的剪切和缩放,上网查找时找到了这个插件.样式很好看,功能也很OK.但是网上都是php进行后台处理图片的例子,然后只好慢慢琢磨C#的处理.插件地址是:http://www. ...

  9. Cordova各个插件使用介绍系列(六)—$cordovaDevice获取设备的相关信息

    详情请看:Cordova各个插件使用介绍系列(六)—$cordovaDevice获取设备的相关信息 在项目中需要获取到当前设备,例如手机的ID,联网状态,等,然后这个Cordova里有这个插件可以用, ...

随机推荐

  1. L2-011. 玩转二叉树(不建树)

    L2-011. 玩转二叉树   给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列.所谓镜面反转,是指将所有非叶结点的左右孩子对换.这里假设键值都是互不相等的正整 ...

  2. COJ 1411 Longest Consecutive Ones

    题目大意: 希望在 k 步之内,将尽可能多的1移到相邻的位置上 这里依靠前缀和解决问题 我们用pos[i]保存第i个1的位置,这里位置我以1开始 用sum[i]保存前 i 个1从 0 点移到当前位置所 ...

  3. hdu 5017 模拟退火算法

    hdu 5017 http://blog.csdn.net/mypsq/article/details/39340601 #include <cstdio> #include <cs ...

  4. nyoj_278_排队_201403282135

    排队 时间限制:3000 ms  |  内存限制:65535 KB 难度:1   描述 周末了,软件ACM的队员准备玩玩游戏,娱乐一下,CY想了一个好主意,所有队员站成一个圈,从1开始报数,凡是报出指 ...

  5. 洛谷——P1720 月落乌啼算钱

    题目背景 (本道题目木有以藏歌曲……不用猜了……) <爱与愁的故事第一弹·heartache>最终章. 吃完pizza,月落乌啼知道超出自己的预算了.为了不在爱与愁大神面前献丑,只好还是硬 ...

  6. 16、Java并发性和多线程-死锁

    以下内容转自http://ifeve.com/deadlock/: 死锁是两个或更多线程阻塞着等待其它处于死锁状态的线程所持有的锁.死锁通常发生在多个线程同时但以不同的顺序请求同一组锁的时候. 例如, ...

  7. Javascript: 动态显示进度条

    {% if not config.exec_id == '' %} <br /> <div class="progress"> <div class= ...

  8. 1.7-BGP④

    注意:默认路由ip route 0.0.0.0 0.0.0.0 12.1.1.1是不可以作为BGP邻居TCP始发连接的(但回包可以) 要配静态路由:ip route 13.1.1.3 255.255. ...

  9. Android开发系列(二十四):Notification的功能与使用方法

    关于消息的提示有两种:一种是Toast,一种就是Notification.前者维持的时间比較短暂.后者维持的时间比較长. 并且我们寻常手机的应用比方网易.贴吧等等都有非常多的推送消息,就是用Notif ...

  10. Python科学计算的瑞士军刀——Anaconda 安装与配置

    Introduce Python是一种强大的编程语言.其提供了非常多用于科学计算的模块,常见的包含numpy.scipy和matplotlib.要利用Python进行科学计算.就须要一一安装所需的模块 ...