Jcrop с предварительным просмотром изменения размера
Я использую Jcrop с панелью предварительного просмотра, как показано в руководстве здесь http://net.tutsplus.com/articles/news/working-with-the-jcrop-plugin/. Здесь показано, как создать простой интерфейс Jcrop с панелью предварительного просмотра, чтобы показать результат при обрезке. К сожалению, панель предварительного просмотра в этом случае имеет фиксированный размер и просто масштабирует изображение по мере обрезки, создавая обрезанное изображение того же фиксированного размера.
Что я хотел бы сделать, так это изменить размер панели предварительного просмотра вместе с инструмент обрезка для отображения результирующего изображения в виде пользовательской обрезки, позволяющий пользователю выбрать размеры результирующего изображения. Затем я могу применить Максимальный или минимальный размер При загрузке изображения.
Панель предварительного просмотра CSS и код приведены ниже. Обратите внимание, что переменные targ_h и targ_w определяются независимо от того, что я выбираю. Orig_w и orig_h считываются с исходного изображения.
#preview
{
width: <?php echo $targ_w?>px;
height: <?php echo $targ_h?>px;
overflow:hidden;
}
function updateCoords(c)
{
showPreview(c);
$("#x").val(c.x);
$("#y").val(c.y);
$("#w").val(c.w);
$("#h").val(c.h);
}
function showPreview(coords)
{
var rx = <?php echo $targ_w;?> / coords.w;
var ry = <?php echo $targ_h;?> / coords.h;
$("#preview img").css({
width: Math.round(rx*<?php echo $orig_w;?>)+'px',
height: Math.round(ry*<?php echo $orig_h;?>)+'px',
marginLeft:'-'+ Math.round(rx*coords.x)+'px',
marginTop: '-'+ Math.round(ry*coords.y)+'px'
});
}
Кто-нибудь делал это раньше, и ширина и высота панели предварительного просмотра изменялись вместе с шириной а высота орудия обрезки?
1 ответ:
Вот что я сделал в своем:
function showPreview(photoDiv, coords, maxX, maxY) { var rx = maxX / coords.w; var ry = maxY / coords.h; rx = (rx == 0) ? 1 : rx; ry = (ry == 0) ? 1 : ry; photoX = $("#" + photoDiv + " #photo").width(); photoY = $("#" + photoDiv + " #photo").height(); $("#" + photoDiv + " #preview").css({ width: Math.round(rx * photoX) + 'px', height: Math.round(ry * photoY) + 'px', marginLeft: '-' + Math.round(rx * coords.x) + 'px', marginTop: '-' + Math.round(ry * coords.y) + 'px' }); }
Я думаю, что
maxX
будет относиться к вашему$targ_w
. Это настроено таким образом, потому что у меня есть несколько экземпляров jCrop на одной странице. Редактируйте его в зависимости от ваших настроек.