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 3

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 на одной странице. Редактируйте его в зависимости от ваших настроек.