微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JCrop 无法在固定图像宽度和高度上正常工作

如何解决JCrop 无法在固定图像宽度和高度上正常工作

我在图像控件上设置固定宽度和高度时遇到裁剪问题:

<img id="Image1" width="500" height="500" src="" alt="" style="display: none" />

当我删除 width 和 height 属性效果很好,但是,另一方面,当上传大尺寸图像时,它会占用整个屏幕区域。

我如何克服这一挑战?

这是完整的代码

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Upload Image</title>
    <Meta charset="utf-8">
    <Meta name="viewport" content="width=device-width,initial-scale=1">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-jcrop/0.9.9/js/jquery.Jcrop.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $('#FileUpload1').change(function () {
                $('#Image1').hide();
                var reader = new FileReader();
                reader.onload = function (e) {
                    $('#Image1').show();
                    $('#Image1').attr("src",e.target.result);
                    $('#Image1').Jcrop({
                        onChange: SetCoordinates,onSelect: SetCoordinates
                    });
                }
                reader.readAsDataURL($(this)[0].files[0]);
            });

            $('#btnCrop').click(function () {
                var x1 = $('#imgX1').val();
                var y1 = $('#imgY1').val();
                var width = $('#imgWidth').val();
                var height = $('#imgHeight').val();
                var canvas = $("#canvas")[0];
                var context = canvas.getContext('2d');
                var img = new Image();
                img.onload = function () {
                    canvas.height = height;
                    canvas.width = width;
                    context.drawImage(img,x1,y1,width,height,height);
                    $('#imgCropped').val(canvas.toDataURL());
                    $("#Image2")[0].src = canvas.toDataURL();
                };
                img.src = $('#Image1').attr("src");
                $("#canvas").hide();
            });
        });
        function SetCoordinates(c) {
            $('#imgX1').val(c.x);
            $('#imgY1').val(c.y);
            $('#imgWidth').val(c.w);
            $('#imgHeight').val(c.h);
            $('#btnCrop').show();
        };
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div class="container">
            <div class="jumbotron">
                <h1>Upload Image</h1>
            </div>
            <div class="row">
                <div class="col" style="background-color: lavender;">
                    <p>This is some text.</p>
                </div>
                <div class="col" style="background-color: orange;">
                    <input type="file" id="FileUpload1" accept=".jpg,.png,.gif" />
                    <br />
                    <br />
                    <table border="0" cellpadding="0" cellspacing="5">
                        <tr>
                            <td>
                                <img id="Image1" width="500" height="500" src="" alt="" style="display: none" />
                            </td>
                            <td>
                                <canvas id="canvas" height="5" width="5"></canvas>
                            </td>
                        </tr>
                    </table>
                    <br />
                    <input type="button" id="btnCrop" value="Crop" style="display: none" />
                    <input type="hidden" name="imgX1" id="imgX1" />
                    <input type="hidden" name="imgY1" id="imgY1" />
                    <input type="hidden" name="imgWidth" id="imgWidth" />
                    <input type="hidden" name="imgHeight" id="imgHeight" />
                    <input type="hidden" name="imgCropped" id="imgCropped" />
                </div>
                <div class="col" style="background-color: lavender;">
                    <div>
                        <asp:Image ID="Image2" runat="server" />
                    </div>
                </div>
            </div>

        </div>
    </form>
</body>
</html>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。