zoukankan      html  css  js  c++  java
  • 图片裁切插件jCrop的使用心得(三)

    在这一篇里,我来具体讲讲代码该如何写。

    下面是jCrop的初始化代码

    //图片裁剪插件Jcrop初始化
        function initJcrop() {
            // 图片加载完成 
            document.getElementById('originalImg').onload = function () {
                var imgWidth = $("#originalImg").width();
                var imgHeight = $("#originalImg").height();
                //同时启动裁剪操作,触发裁剪框显示,让用户选择图片区域
                jcropObj = $.Jcrop("#originalImg");
                jcropObj.setOptions({
                    //bgColor: 'black',
                    //bgOpacity: .4,
                    aspectRatio: imgScale,
                    boxWidth: imgWidth,
                    boxHeight:imgHeight,
                    onChange: showPreview,   //当裁剪框变动时执行的函数
                    onSelect: saveData   //当选择完成时执行的函数
                });
                //创建选框
                var selectWidth = imgWidth / 2;
                var selectHeight = selectWidth / imgScale;
                jcropObj.setSelect([0, 0, selectWidth, selectHeight]);
            };
        }

    注意:

    因为图片并不是一开始就有的,而是要用户先上传而后才能显示的,所以我在这里用了onload事件,当图片加载成功时再去初始化jCrop插件。

    另外就是为了用户更好的体验,我们先把选框(就是虚线勾勒的裁切框)创建好,这里因为我的图片裁切比例是不固定的,所以用setSelect方法

    来生成,裁切框的起点坐标是0,0.

    下面是如何获取用户裁切好的参数。

    //保存图片裁剪的参数
        function saveData(coords) {
            //保存图片的参数
            var scaleData = {
                url:$originalImg.attr("src"),
                x1: coords.x,
                y1: coords.y,
                 coords.w,
                height: coords.h
            }
            $box.data("sacleData", scaleData);
        }

    这个方法是在onSelect事件触发时执行,即当选择完成时执行的函数。

    这个回调函数会传过来一个coords参数,里面包含了裁切的起始点的坐标和裁切框的宽度和高度。

    将这四个数值传递给后台即可,剩下的事情就是后台同事来处理了。

    http://www.cnblogs.com/kissdodog/archive/2012/12/21/2827867.html

    这里有个哥们用.net后台来实现的图片裁切,如果需要的话可以看看,里面也有demo下载。

    那么基本上的jCrop的使用就介绍的差不多了,再下一篇里我将介绍一些这些插件的扩展和遇到的问题。

  • 相关阅读:
    Instruments之Core Animation学习
    Instruments之Allocations
    Instruments之Activity Monitor使用入门
    Instruments之相关介绍(一)
    快速理解Java中的五种单例模式
    iOS单例详解
    eclipse设置代码自动提示
    iOS-静态库,动态库,framework,bundle浅析(四)
    8.0docker的客户端和守护进程
    1.0 docker介绍
  • 原文地址:https://www.cnblogs.com/kwzm/p/5179941.html
Copyright © 2011-2022 走看看