javascript - fengyuanchen Cropper - How to Fit Image into Canvas If Rotated? -
i gone through documentation of cropper fengyuanchen. want image fit default canvas if rotated. couldnt find way achieve this. idea how achieve functionality?
i want default: link
check issue demo here: link
i fixed behavior special needs. needed 1 rotate button rotates image in 90° steps. other purposes might extend/change fix. works in "strict" mode dynamically change cropbox dimensions.
here function called, when want rotate image. ah , additionally misplacement bug has been fixed.
var $image; function initcropper() { $image = $('.imageuploadpreviewwrap > img').cropper({ autocrop : true, strict: true, background: true, autocroparea: 1, crop: function(e) { } }); } function rotateimage() { //get data var data = $image.cropper('getcropboxdata'); var contdata = $image.cropper('getcontainerdata'); var imagedata = $image.cropper('getimagedata'); //set data of cropbox avoid unwanted behavior due strict mode data.width = 2; data.height = 2; data.top = 0; var leftnew = (contdata.width / 2) - 1; data.left = leftnew; $image.cropper('setcropboxdata',data); //rotate $image.cropper('rotate', 90); //get canvas data var canvdata = $image.cropper('getcanvasdata'); //calculate new height , width based on container dimensions var heightold = canvdata.height; var heightnew = contdata.height; var koef = heightnew / heightold; var widthnew = canvdata.width * koef; canvdata.height = heightnew; canvdata.width = widthnew; canvdata.top = 0; if (canvdata.width >= contdata.width) { canvdata.left = 0; } else { canvdata.left = (contdata.width - canvdata.width) / 2; } $image.cropper('setcanvasdata', canvdata); //and set cropper "back" full crop data.left = 0; data.top = 0; data.width = canvdata.width; data.height = canvdata.height; $image.cropper('setcropboxdata',data); }
Comments
Post a Comment