내 앱 사용자는 자신의 기기에서 사진을 찍거나 이미지를 업로드 할 수 있습니다. 이 이미지는 Jcrop 함수의 소스입니다. 이 기능은 '작물'처럼 올바르게 작동합니다. 그러나 jcrop-tracker는 자르기를 미리 보았지만 이미지에서 정확한 위치를 나타내지 않습니다.Jcrop-tracker가 올바른 위치를 표시하지 않는 이유는 무엇입니까?
이 예제를 참조하십시오
이미지의 상단에 추적기를 이동, 거의 전체 이미지를 보여 드리겠습니다. 더 아래로 움직이면 아무 것도 보여주지 않을 것입니다. 이것이 어떻게 가능한지?
내 생각 엔 jCrop이 축소 된 사진 (예 : 카메라 카메라에서 찍은 사진)에 문제가 있기 때문입니다. 나는 그것이 장치 화면에 들어갈 수 있도록 CSS 이미지를 다운 스케일을 사용
:
#imgContainer {
max-width: 100%;
max-height: 100%;
}
#imgContainer img {
max-width: 100%;
max-height: 100%;
}
는이 문제를 방지 할 수있는 방법이 있습니까?
여기 내 코드입니다 :
$(window).load(function() {
var jcrop_api, boundx, boundy;
function updatePreview(c) { // croping image preview
if (parseInt(c.w) > 0) {
var rx = 220/c.w, ry = 220/c.h;
}
}
function showCoords(c) { // show all coords
$('#x').val(c.x);
$('#y').val(c.y);
$('#x2').val(c.x2);
$('#y2').val(c.y2);
$('#w').val(c.w);
$('#h').val(c.h);
}
$('#cropImage').Jcrop({
onChange: updatePreview,
onSelect: showCoords,
bgFade: true,
bgOpacity: .8,
aspectRatio: 1,
maxSize: [ 150, 150 ],
boxWidth: 284,
boxHeight: 382
},function(){
jcrop_api = this;
});
var canvas = document.getElementById("canvasresult");
$("#m1-cropScreen-cropIt").on("click", function(){
var context = canvas.getContext("2d");
var img = document.getElementById("cropImage"),
$img = $(img),
imgW = img.naturalWidth,
imgH = img.naturalHeight;
console.log($img.width());
console.log($img.height());
var ratioY = imgH/$img.height(),
ratioX = imgW/$img.width();
var getX = $('#x').val() * ratioX,
getY = $('#y').val() * ratioY,
getWidth = $('#w').val() * ratioX,
getHeight = $('#h').val() * ratioY;
context.drawImage(img,getX,getY,getWidth,getHeight,0,0,150,150);
$('#cropResult').attr('src', canvas.toDataURL());
});
});
직접 테스트 할 수있는 항목을 게시 할 수 있습니까? (일부 html 소스가 없기 때문에 바이올린이나 무언가가 유용 할 것입니다.) – Veda
"올바른"이미지 크기를 사용하지 않아서 문제가 발생했다고 생각합니다. 실제 이미지/크기를 "전송"하지 않습니다! 또한'max-height : 100 %'를 사용하면 이미지의 가로 세로 비율이 변경 될 수 있습니다 (이미지 높이가 너비 100 %의 뷰포트 높이보다 높을 때). 뷰포트 너비에 따라 그림의 너비와 높이를 변환하고 잘라내어 자르기를 원래 이미지 크기로 다시 변환해야한다고 생각합니다. – Netsurfer
흠 여기에 요점이 있을지 모릅니다. 뷰포트 너비의 크기로 이미지를 변환 할 수있는 방법이 있습니까? – Forza