我正在使用Jcrop和预览窗格,如本教程http://net.tutsplus.com/articles/news/working-with-the-jcrop-plugin/中所示。这显示了如何使用预览窗格创建一个简单的Jcrop界面,以在裁剪时显示结果。不幸的是,在这种情况下,预览窗格具有固定的大小,只需在裁剪时缩放图像,生成相同固定大小的裁剪图像。
我想要做的是让预览窗格与裁剪工具一起调整大小以在用户裁剪时显示结果图像,从而允许用户决定结果图像的尺寸。然后,我可以在上传图像时应用最大或最小尺寸。
预览窗格CSS和代码如下。请注意,targ_h和targ_w变量定义为我选择的任何内容。从原始图像中读取orig_w和orig_h。
#preview
{
width: <?php echo $targ_w?>px;
height: <?php echo $targ_h?>px;
overflow:hidden;
}
function updateCoords(c)
{
showPreview(c);
$("#x").val(c.x);
$("#y").val(c.y);
$("#w").val(c.w);
$("#h").val(c.h);
}
function showPreview(coords)
{
var rx = <?php echo $targ_w;?> / coords.w;
var ry = <?php echo $targ_h;?> / coords.h;
$("#preview img").css({
width: Math.round(rx*<?php echo $orig_w;?>)+'px',
height: Math.round(ry*<?php echo $orig_h;?>)+'px',
marginLeft:'-'+ Math.round(rx*coords.x)+'px',
marginTop: '-'+ Math.round(ry*coords.y)+'px'
});
}
之前是否有人这样做过,并且预览窗格的宽度和高度会随裁剪工具的宽度和高度而变化?
答案 0 :(得分:9)
这就是我在我的所作所为:
function showPreview(photoDiv, coords, maxX, maxY)
{
var rx = maxX / coords.w;
var ry = maxY / coords.h;
rx = (rx == 0) ? 1 : rx;
ry = (ry == 0) ? 1 : ry;
photoX = $("#" + photoDiv + " #photo").width();
photoY = $("#" + photoDiv + " #photo").height();
$("#" + photoDiv + " #preview").css({
width: Math.round(rx * photoX) + 'px',
height: Math.round(ry * photoY) + 'px',
marginLeft: '-' + Math.round(rx * coords.x) + 'px',
marginTop: '-' + Math.round(ry * coords.y) + 'px'
});
}
我猜maxX
会引用您的$targ_w
。这是以这种方式设置的,因为我在一个页面中有多个jCrop实例。根据您的设置进行编辑。