Это макет и дизайн моей страницы.Правильная обрезка изображения Проблема
HTML код:
<div id="myid_browse_modal_image" >
<image id="img_browse" src=""></image>
</div>
<div id="div_myphoto">
<img id="img_myphoto" src="" alt="ID Photo"/>
</div>
CSS код:
#myid_browse_modal_image
{
height: 370px;
line-height: 370px;
text-align:center;
border: 1px;
border-style: solid;
border-color: gray;
}
#myid_browse_modal_image > img
{
max-width: 100%;
height: 100%;
}
#div_myphoto > img
{
width: 150px;
height: 150px;
max-width:150px;
max-height: 150px;
border: 2px;
border-style: solid;
border-color: black;
}
Моя проблема выглядит следующим образом. Я реализую функциональность, где я могу просматривать изображение и иметь возможность обрезать его. Это выглядит, как на картинке ниже:
Когда я нажимаю «Установить как ID Photo», она вызывает функцию, которые выполняют функции кадрирования:
function myid_browse_crop()
{
var img_browse = document.getElementById('img_browse');
var $img_browse = $(img_browse);
var img_myphoto= document.getElementById('img_myphoto');
var $img_myphoto = $(img_myphoto);
//Create a temporary canvas
var canvas= document.createElement("canvas");
canvas.id = "temp_canvas";
canvas.width = img_browse.width;
canvas.height = img_browse.height;
// get the canvas context;
var ctx = canvas.getContext('2d');
ctx.drawImage(img_browse, 0, 0);
//Get the position of my resizable div relative to the image
var relativeX = $(".browse-selection").offset().left - $("#img_browse").offset().left;
var relativeY = $(".browse-selection").offset().top - $("#img_browse").offset().top;
var relativeW = $(".browse-selection").width();
var relativeH = $(".browse-selection").height();
var imageData = ctx.getImageData(relativeX,relativeY, relativeW, relativeH);
// create destination canvas
var canvas1 = document.createElement("canvas");
canvas1.width = relativeW;
canvas1.height = relativeH;
var ctx1 = canvas1.getContext("2d");
ctx1.rect(0, 0, relativeW, relativeH);
ctx1.putImageData(imageData, 0, 0);
img_myphoto.src = canvas1.toDataURL();
}
Результат обрезанное изображение находится ниже , что неверно.
Это может быть из-за размеров изображения. Изображение меньше, на самом деле (202 х 250 пикселей), но искажается когда просматривание и выбран из-за CSS ниже, что делает его (299 х 370 пикселей):
#myid_browse_modal_image > img
{
max-width: 100%;
height: 100%;
}
Как я это исправить? Чтобы получить только правильный выбранный регион. Anyways «.browse -selection» - это div с пунктирными линиями в изображении 1. Он генерируется подключаемым модулем jquery, поэтому он не включен в мой оригинальный HTML-код.
Это работает, но я только в условиях ограниченного пространства. Изображение имеет максимальную высоту и ширину. Когда он превышает максимальный, он должен соответствовать его родительскому div. – Eliyah
Я отредактировал asnwer, чтобы ограничить максимальную высоту изображения –
Это не тот случай, Андрей, да, я могу ограничить максимальную высоту изображения, но обрезанное изображение не получается правильно, выбранная область. – Eliyah