3

ここのチュートリアルhttp://net.tutsplus.com/articles/news/working-with-the-jcrop-plugin/に見られるように、プレビューペインで Jcrop を使用しています。これは、トリミング時に結果を表示するプレビュー ペインを備えた単純な 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'
            });
        }

誰かがこれを以前に行ったことがあり、プレビュー ペインの幅と高さがトリミング ツールの幅と高さで変更されましたか?

4

1 に答える 1

9

これは私が私の中でやったことです:

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。1 つのページに複数の jCrop インスタンスがあるため、このように設定されています。設定に応じて編集してください。

于 2011-09-15T02:54:25.403 に答える