Jcrop 是一个功能强大的 jQuery 图像裁剪插件,结合后端程序(例如:PHP)可以快速的实现图片裁剪的功能。
在API中有一个方法可以设置或改变图片:
//设定(或改变)图像。例:jcropApi.setImage('newpic.jpg')
setImage(string, callback)
但遗憾的是此方法并不支持设置图片的宽高,网上找了一大圈没有找到合适的方法,于是看了下源码,做了修改后可以支持自定义图片宽高。
要修改地方是jquery.Jcrop.js代码中setImage方法,加上宽高两个参数即可:
修改前:
function setImage(src, callback) //{{{
{
Selection.release();
disableCrop();
var img = new Image();
img.onload = function () {
var iw = img.width;
var ih = img.height;
var bw = options.boxWidth;
var bh = options.boxHeight;
$img.width(iw).height(ih);
$img.attr('src', src);
$img2.attr('src', src);
presize($img, bw, bh);
boundx = $img.width();
boundy = $img.height();
$img2.width(boundx).height(boundy);
$trk.width(boundx + (bound * 2)).height(boundy + (bound * 2));
$div.width(boundx).height(boundy);
Shade.resize(boundx,boundy);
enableCrop();
if (typeof(callback) === 'function') {
callback.call(api);
}
};
img.src = src;
}
修改后:
//w:图片宽度
//h: 图片高度
function setImage(src,w,h, callback) //{{{
{
Selection.release();
disableCrop();
var img = new Image();
img.onload = function () {
if(typeof(w) != "undefined"&&w!=''&&w!=0){
img.width = w;
}
if(typeof(h) != "undefined"&&h!=''&&h!='undefined'&&h!=0){
img.height = h;
}
var iw = img.width;
var ih = img.height;
var bw = options.boxWidth;
var bh = options.boxHeight;
$img.width(iw).height(ih);
$img.attr('src', src);
$img2.attr('src', src);
presize($img, bw, bh);
boundx = $img.width();
boundy = $img.height();
$img2.width(boundx).height(boundy);
$trk.width(boundx + (bound * 2)).height(boundy + (bound * 2));
$div.width(boundx).height(boundy);
Shade.resize(boundx,boundy);
enableCrop();
if (typeof(callback) === 'function') {
callback.call(api);
}
};
img.src = src;
}
调用此方法:
//原图尺寸1920 * 1080
var imgurl = 'http://attach.bbs.miui.com/forum/201312/06/211346rdqzode7loq7oo5o.jpg';
//调用setImage方法,设置图片大小为 480*270
jcrop_api.setImage(imgurl,480,270);
附上修改后的js文件: