4

均一性のためにcssでサイズ変更された画像にJcropを使用しています。

JS

<script type="text/javascript">
    $(window).load(function() {
        //invoke Jcrop API and set options
        var api = $.Jcrop('#image', { onSelect: storeCoords, trueSize: [w, h] });
        api.disable(); //disable until ready to use

        //enable the Jcrop on crop button click
        $('#crop').click(function() {
            api.enable();
        });
    });
    function storeCoords(c) {
    $('#X').val(c.x);
    $('#Y').val(c.y);
    $('#W').val(c.w);
    $('#H').val(c.h);
    };
</script>

HTML

<body>
    <img src="/path/to/image.jpg" id="image" class="img_class" alt="" />
     <br />
     <span id="crop" class="button">Crop Photo</span>
     <span id="#X" class="hidden"></span>
     <span id="#Y" class="hidden"></span>
     <span id="#W" class="hidden"></span>
     <span id="#H" class="hidden"></span>
</body>

CSS

body { font-size: 13px; width: 500px; height: 500px; }
.image { width: 200px; height: 300px; }
.hidden { display: none; }

hおよびw変数を実際の画像のサイズに設定する必要があります。マニピュレーターを使用し.clone()て画像のコピーを作成し、クローンからクラスを削除してサイズを取得しようとしましたが、変数がゼロに設定されます。

var pic = $('#image').clone();
pic.removeClass('image');
var h = pic.height();
var w = pic.width();

ページ内の要素に画像を追加すると機能しますが、これらはより大きな画像であり、これを行うためのより良い方法がある場合は、非表示の画像としてロードしたくないと思います。また、クラスを削除し、変数を設定してから、クラスを再度追加すると、散発的な結果が生成されていました。

私は次のようなものを望んでいました:

$('#image').removeClass('image', function() {
    h = $(this).height();
    w = $(this).width();
}).addClass('image');

しかし、removeClass関数はそのようには機能しません:P

4

2 に答える 2

4

画像を非表示にしてから、寸法を取得してから表示してみてください。

var $img = $("#image");
$img.hide().removeClass("image");
var width = $img.width();
var height = $img.height();
$img.addClass("image").show();

これにより、クラスの追加および削除中に発生する可能性のある奇妙な動作が削除されます。

于 2011-01-08T14:08:33.867 に答える
1

おそらく、イメージのクローンを作成し (キャッシュする必要があるため、ネットワークに極端に負担をかけるべきではありません)、クローンされたイメージのサイズを取得できます。

$newImg = $("#image").clone();
$newImg.css("display", "none").removeClass("image").appendTo("body");
var width = $newImg.width(), height = $newImg.height();
$newImg.remove();

幸運を!

于 2011-01-08T14:13:09.357 に答える