JCrop:以前的图像没有更新?

Posted

技术标签:

【中文标题】JCrop:以前的图像没有更新?【英文标题】:JCrop: previous image not updated? 【发布时间】:2012-12-12 13:48:40 【问题描述】:

我开发了一个小型 JCrop 文件上传应用;这是我的代码:

 function createCropImage(event)
        
   //alert(event.target.result); 

   document.getElementById("Imgpreview").src = event.target.result;
   var img2 = document.getElementById("Imgpreview1").src = event.target.result;

   // Create variables (in this scope) to hold the API and image size
   var jcrop_api, boundx, boundy;

   $('#Imgpreview1').Jcrop(
        onChange: updatePreview,
        onSelect: updatePreview,
        aspectRatio: 1
      ,function()
        // Use the API to get the real image size

   var bounds = this.getBounds();
       boundx = bounds[0];
       boundy = bounds[1];
       // Store the API in the jcrop_api variable
       jcrop_api = this;


    );

    function updatePreview(c)
      
      $('#Xcoardinate').val( Math.round(c.x));
      $('#Ycoardinate').val( Math.round(c.y));

      $('#width').val( Math.round(c.w));
      $('#height').val( Math.round(c.h));
        if (parseInt(c.w) > 0)
          
          var rx = 100 / c.w;
          var ry = 100 / c.h;

          $('#Imgpreview').css(
            width: Math.round(rx * boundx) + 'px',
            height: Math.round(ry * boundy) + 'px',
            marginLeft: '-' + Math.round(rx * c.x) + 'px',
            marginTop: '-' + Math.round(ry * c.y) + 'px'
          );
        
      ;


这里Imgpreview 是预览图像,Imgpreview1 是源图像。我先通过浏览按钮选择一张图片:

<input type="file" size="45" id="photoUploadElmt" name="upload" onchange="previewImg()" style="width:430px;"/>

原始图像 (Imgpreview1) 和预览图像 (Imgpreview) 显示正常,但如果我选择另一个图像,预览图像是正确的,但我看到的是旧图像而不是 Imgpreview1

如果我将以下代码放入 cmets,则图像可以正确显示,但我会丢失 JCrop 实例:

 $('#Imgpreview1').Jcrop(
            onChange: updatePreview,
            onSelect: updatePreview,
            aspectRatio: 1
          ,function()
            // Use the API to get the real image size

            var bounds = this.getBounds();
            boundx = bounds[0];
            boundy = bounds[1];
            // Store the API in the jcrop_api variable
            jcrop_api = this;


          );

【问题讨论】:

【参考方案1】:

destroy method 不可靠,因此创建一个自定义的similar question

【讨论】:

以上是关于JCrop:以前的图像没有更新?的主要内容,如果未能解决你的问题,请参考以下文章

调整主图像大小后,jcrop 演示不再有效(使用图片更新)

jcrop css 更新 vline 和 hline

如何将默认图像设置为没有以前图像的 Android 手机联系人

是否可以在选择框更改时设置/更新 jCrop 纵横比?

Jcrop on video - 视频仅在裁剪选择中显示

Jcrop 裁剪图像无法正常工作,正在裁剪错误的部分