使用需求:当使用jcrop时,裁剪的操作界面大小很多时候都要设置。
使用场景:
1.向后端传递选框的x,y,wigth,higth数值和图片文件
2.后端根据图片实际大小进行裁剪(非显示大小)
3.在div容器中设置图片大小
分析:
1.前端显示的图片大小和后端裁剪的图片大小是不同的,选框的显示大小和实际大小也不同。
平常使用jcrop时获取的选框大小数据是显示的选框大小(图片显示小,选框大小数据也就小)。
2.那么在后台如果直接传x,y,w,h的数据,用这些显示的数据去裁剪原图大小的图片显然裁剪不正确
做法
//原图大小
var screenImage = $("#original-img");
var theImage = new Image();
theImage.src = screenImage.attr("src");
var imageWidth = theImage.width;
var imageHeight = theImage.height;
//显示大小
var showimageWidth = screenImage.width();
var showimageHeight = screenImage.height();
//图片缩放比例
var ww = imageWidth/showimageWidth
var hh = imageHeight/showimageHeight
//选框大小比例统一成原图大小
x = Math.round(c.x*ww);
y = Math.round(c.y*hh);
width = Math.round(c.w*ww);
height = Math.round(c.h*hh);
如上,自己去设置统一缩放选框的比例,把正确的数据给后台
ps:你也可以选择用显示的图片大小去裁剪,这样选框的大小可以不变(总之一句话:多大的图用多大的框,显示的大小不是裁剪的大小)