You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现JavaScript图片resize功能时Canvas调用drawImage报错求助

错误原因

你代码中drawImage方法第一个参数传入了FileReader实例,不符合API要求,该参数只支持HTMLImageElement、HTMLCanvasElement等图片类型对象,所以触发了类型错误。

修正后的完整JS代码
$(document).ready(function() {
    var readURL = function(input) {
        if (input.files && input.files[0]) {
            var reader = new FileReader();
            reader.onload = function (e) {
                // 先创建Image对象加载图片
                var img = new Image();
                img.src = e.target.result;
                img.onload = function() {
                    var canvas = document.createElement('canvas');
                    var ctx = canvas.getContext('2d');
                    canvas.width = 300;
                    canvas.height = 234;
                    // 传Image对象给drawImage
                    ctx.drawImage(img, 0, 0, 300, 234);
                    // 把canvas处理后的图片赋值给页面展示元素
                    $('.profile-pic').attr('src', canvas.toDataURL('image/jpeg'));
                }
            }
            reader.readAsDataURL(input.files[0]);
        }
    }

    $(".file-upload").on('change', function(){
        readURL(this);
    });
    $(".upload-button").on('click', function() {
       $(".file-upload").click();
    });
});
HTML注意事项

你原HTML的input标签写了两个重复的id属性id="formFile"和id="avatar-2",不符合规范,建议删除其中一个,修改后示例:

<div class="upload-button" id="imageresize"><img class="profile-pic"  src="../images/add-image.png" /></div>
<input id="avatar-2" class="file-upload" type="file" name="my_file"  accept="image/*">

内容的提问来源于stack exchange,提问作者Noufal Binu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:09:03