javascript - 如何设置 JQuery JCrop 预览以在文件上传后进行裁剪?

标签 javascript jquery jcrop

我正在使用 JCrop jquery 库,我在使用 HTML 文件控件上传文件后提供图像预览。

查看部分(演示数据)

<input type="file" id="photograph" />
<img src="#" id="target" />

Javascript代码

// for setting img src
function readURL(input) { 
    console.log("readURL");
    if (input.files && input.files[0]) {
        var reader = new FileReader();

        reader.onload = function (e) {
            $('#target').attr('src', e.target.result);
            console.log("inside if =>"+e.target.result);       
        }

        console.log("outside IF");
        reader.readAsDataURL(input.files[0]);

    }
}

// for setting pre-selected cropping area
function setProperties(){ 
   console.log("set properties");

   $('#target').Jcrop({         
              setSelect: [0,12,23,43]
        }); 

}

// on change event for fileupload
$("#photograph").change(function(){ 
    console.log("change event called!");
    readURL(this);
    setProperties();
});

输出

 change event called!
 readURL
 outside IF
 set properties
 inside if=>data:image/jpeg;base64,/9j/4gIcSUNDX1BST0ZJTEUAAQEAAAIMbGNtcwIQAABtbnRyUkdC…sXK2t+4UdmuSVl64hb2gMHh1Nhm83DAdQJniIM6eZUxzuYCR2my3FSwGpVbzBdwlgrrc/

我想在上传图像文件后设置一些属性,但是“inside if=>”[参见上面发布的输出]在最后被调用。那么为什么会发生这种情况呢?以及我应该如何解决这个问题?

最佳答案

在设置图像source并加载图像加载后,您必须调用setProperties

function readURL(input) { 
    console.log("readURL");
    if (input.files && input.files[0]) {
        var reader = new FileReader();

        reader.onload = function (e) {
            $('#target').attr('src', e.target.result);
            console.log("inside if =>"+e.target.result); 
            // Call after source setted and image file loaded
            setProperties();      
        }

        console.log("outside IF");
        reader.readAsDataURL(input.files[0]);

    }
}

关于javascript - 如何设置 JQuery JCrop 预览以在文件上传后进行裁剪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34626683/

相关文章:

javascript - 如何简化变量代码?

javascript - 为什么这个 super 简单的jquery不起作用?

javascript - 单击按钮时设置 JCrop 的宽高比?

javascript - jQuery 点击事件语法

javascript - 使用 Jcrop 和 Pixastic 进行裁剪

php - 存储图像裁剪的方法

javascript - Node JS 中使用捏.js 的子字符串正则表达式

javascript - 在窗口中获取第一个可见的 iFrame 并打印它

javascript - 通过将 Jquery 与 knockout 绑定(bind)来更改子 div 背景

javascript - 是否有一个 Javascript 事件可以根据用户输入不断更新 DOM?