我正在使用jCrop预览演示来做我自己的事情。但是我遇到了一个问题。如果我在使用setSelect:
加载图像时创建默认选择,那么我将选择映射到大图像上,但它不会出现在预览中。我无法找到一个api处理程序来在jCrop加载时调用updatePreview函数。有什么人知道如何在jCrop加载时调用这个函数吗?
jQuery(function($){
// Create variables (in this scope) to hold the API and image size
var jcrop_api, boundx, boundy;
$('#target').Jcrop({
onChange: updatePreview,
onSelect: updatePreview,
setSelect: [ 0, 0, selectWidth, selectHeight ],
aspectRatio: 1
},function(){
// Use the API to get the real image size
var bounds = this.getBounds();
boundx = bounds[0];
boundy = bounds[1];
// Store the API in the jcrop_api variable
jcrop_api = this;
});
function updatePreview(c)
{
if (parseInt(c.w) > 0)
{
var rx = 100 / c.w;
var ry = 100 / c.h;
$('#preview').css({
width: Math.round(rx * boundx) + 'px',
height: Math.round(ry * boundy) + 'px',
marginLeft: '-' + Math.round(rx * c.x) + 'px',
marginTop: '-' + Math.round(ry * c.y) + 'px'
});
}
};
});
答案 0 :(得分:8)
您可以在回调中设置初始选择,而不是animateTo hack。所以:
$('#target').Jcrop({
onChange: updatePreview,
onSelect: updatePreview,
aspectRatio: 1
},function(){
// Use the API to get the real image size
var bounds = this.getBounds();
boundx = bounds[0];
boundy = bounds[1];
// Store the API in the jcrop_api variable
jcrop_api = this;
jcrop_api.setSelect([ 0, 0, selectWidth, selectHeight ]); // <--
});
答案 1 :(得分:5)
我也无法让这个工作,并且自己找到了一个寻找解决方案的问题。
我正在使用Jcrop v0.9.9中的预览演示(tutorial3)。
将jQuery(function($){
更改为jQuery(window).load(function(){
并添加了选项setSelect: [ 0, 40, 312, 244 ]
而且,它不会在加载时更新预览..
我找到的解决方法是使用api animateTo
以及setSelect
(如果您喜欢动画,可以使用它自己的动作,您可以使用选项{{ 1}})
我在您的代码中进行了更改
swingSpeed
答案 2 :(得分:3)
我尝试设置默认值,并在预览框中预览默认值。
jQuery(window).load(function(){
jQuery('#cropbox').Jcrop({
onChange: showPreview,
onSelect: showPreview,
setSelect: [ 100, 0, 100, 100 ],
aspectRatio: 1
});
});
这只是我想要的方式。您的脚本可能还有其他错误。但你不必调用任何特殊的东西来显示预览。如果您没有执行此onload,请尝试执行onload。