Bootstrap Modal 中的 Jcrop 裁剪错误的坐标
Posted
技术标签:
【中文标题】Bootstrap Modal 中的 Jcrop 裁剪错误的坐标【英文标题】:Jcrop in Bootstrap Modal crops wrong coordinates 【发布时间】:2014-05-18 20:09:04 【问题描述】:我在我的 Jcrop 脚本中使用本教程中的代码:http://blogaddition.com/2012/12/crop-an-image-and-upload-using-jquery-html5-and-php/
只要我不将图像放入 Bootstrap 模态,它就可以很好地工作。之后图像被错误裁剪。
我尝试添加boxWidth
和boxHeight
:
$('#load_img').Jcrop(
minSize: [32, 32], // min crop size
aspectRatio : 1, // keep aspect ratio 1:1
bgFade: true, // use fade effect
bgOpacity: .3, // fade opacity
boxWidth: 200, // added
boxHeight: 200, // added
onChange: showThumbnail,
onSelect: showThumbnail
但这没有帮助。如何让 jCrop 在 Bootstrap 模式下工作?
【问题讨论】:
我愚蠢的 hack 是创建引导 css 的副本并将其与我有 jcrop 的页面相关联。所以 jcrop 页面有它自己独立的 css 文件。然后我注释掉了引导 CSS 的底部,一切都开始工作了,而且在移动设备上看起来仍然不错。这是一种愚蠢的方法,但它对我有用.. 【参考方案1】:当图像调整到 div 或 modal 内部时,这是我的解决方案;
<script src="~/assets/global/plugins/jcrop/js/jquery.Jcrop.min.js"></script>
<script type="text/javascript">
var imageCropWidth = 0;
var imageCropHeight = 0;
var cropPointX = 0;
var cropPointY = 0;
var isOk = false;
$(document).ready(function ()
initCrop();
);
$("#hl-crop-image").on("click", function (e)
e.preventDefault();
cropImage();
);
function initCrop()
$('#my-origin-image').Jcrop(
onChange: setCoordsAndImgSize,
aspectRatio: 1,
bgOpacity: 0.25,
bgColor: 'black',
borderOpacity: 1,
handleOpacity: 1,
addClass: 'jcrop-normal'
);
function setCoordsAndImgSize(e)
imageCropWidth = e.w;
imageCropHeight = e.h;
cropPointX = e.x;
cropPointY = e.y;
if (e.w <= 10 || e.h <= 10)
$("#hl-crop-image").removeClass("btn-success").addClass("btn-default");
isOk = false;
else
$("#hl-crop-image").removeClass("btn-default").addClass("btn-success");
isOk = true;
function cropImage()
if (imageCropWidth == 0 && imageCropHeight == 0)
alert("Please, select an area.");
return;
var pic = $("#my-origin-image")
// need to remove these in of case img-element has set width and height
pic.removeAttr("width");
pic.removeAttr("height");
yukleniyor();
var pW = $("#my-origin-image")[0].naturalWidth / $("#my-origin-image").width();
var pH = $("#my-origin-image")[0].naturalHeight / $("#my-origin-image").height();
pW = pW.toFixed(2);
pH = pH.toFixed(2);
if (isOk == true)
$.ajax(
url: '/Profile/CropImae',
type: 'POST',
data:
imagePath: $("#my-origin-image").attr("src"),
cropPointX: (cropPointX * pW).toFixed(0),
cropPointY: (cropPointY * pH).toFixed(0),
imageCropWidth: (imageCropWidth * pW).toFixed(0),
imageCropHeight: (imageCropHeight * pH).toFixed(0)
,
success: function (data)
window.location = "/profile/info";
,
error: function (data)
window.location = "/profile/info";
,
fail: function (data)
window.location = "/profile/info";
);
else alert("Selected area is not enough!");
</script>
【讨论】:
以上是关于Bootstrap Modal 中的 Jcrop 裁剪错误的坐标的主要内容,如果未能解决你的问题,请参考以下文章
html BootStrap Modal对象中的MVC表单。
bootstrap 的modal中popover操作时,弹窗中的输入框,按钮不能聚焦
Modal中的Bootstrap DatePicker不起作用
Draggable JS Bootstrap modal - 性能问题