图片裁切插件jCrop的使用心得(三)

时间:2023-03-10 03:43:04
图片裁切插件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,
width: 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的使用就介绍的差不多了,再下一篇里我将介绍一些这些插件的扩展和遇到的问题。