首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现Javascript图像大小调整

实现Javascript图像大小调整
EN

Stack Overflow用户
提问于 2021-09-12 07:18:23
回答 2查看 184关注 0票数 0

我试图修复画布大小调整(缩小)图像,我得到了小提琴http://jsfiddle.net/EWupT/图像大小调整。当用户上传即时图像显示在输入字段上时,我有html输入字段,当在我的现有代码上添加调整大小代码时,我得到了一个错误。任何帮助都非常感谢。

我的JS:

代码语言:javascript
复制
    $(document).ready(function() {
    var readURL = function(input) {
        if (input.files && input.files[0]) {
            var reader = new FileReader();
            reader.onload = function (e) {
                
                var canvas = document.createElement('canvas');
                var ctx = canvas.getContext('2d');
                canvas.width=300;
                canvas.height=234;
                ctx.drawImage(reader, 0, 0, 300, 234);

                $('.profile-pic').attr('src', e.target.result);
            }
            reader.readAsDataURL(input.files[0]);
        }
    }

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

我的HTML:

代码语言:javascript
复制
<div class="upload-button" id="imageresize"><img class="profile-pic"  src="../images/add-image.png" /></div>
<input id="formFile" id="avatar-2" class="file-upload" type="file" name="my_file"  accept="image/*">

我发现了一个错误:

代码语言:javascript
复制
Uncaught TypeError: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The provided value is not of type '(CSSImageValue or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or OffscreenCanvas or SVGImageElement or VideoFrame)'.
    at FileReader.reader.onload
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-28 14:40:36

增加了filereader.onload函数,在里面我们可以使用调整大小的代码。更新代码:

代码语言:javascript
复制
$(".upload-button").on('click', function() {
  $(".file-upload").click();
});
var fileReader = new FileReader();

fileReader.onload = function(event) {
  var image = new Image();

  image.onload = function() {
    var canvas = document.createElement("canvas");
    var context = canvas.getContext("2d");
    canvas.width = 500;
    canvas.height = 380;
    //canvas.height=image.height/1;

    $('#upload-preview').width(500); //pixels

    var hRatio = canvas.width / image.width;
    var vRatio = canvas.height / image.height;
    var ratio = Math.min(hRatio, vRatio);

    context.drawImage(image, 0, 0, image.width, image.height, 0, 0,
      image.width * ratio, image.height * ratio
    );

    document.getElementById("upload-preview").src = canvas.toDataURL();
  }
  image.src = event.target.result;
};

var uploadImage = function() {
  var uploadImage = document.getElementById("upload-Image");

  if (uploadImage.files.length === 0) {
    return;
  }

  var uploadFile = document.getElementById("upload-Image").files[0];
  fileReader.readAsDataURL(uploadFile);
}
票数 0
EN

Stack Overflow用户

发布于 2021-09-12 07:59:14

由于您正在使用new Image()函数并动态生成HTMLImageElement对象,因此在onload函数之后添加img.src,如下所示:

代码语言:javascript
复制
img = new Image();
img.onload = function(){
  var canvas = document.createElement('canvas');
    var ctx = canvas.getContext('2d');
    canvas.width=300
    canvas.height=234
    ctx.drawImage(img, 0, 0, 300, 234);
    document.body.appendChild(canvas);
};
img.src = 'http://i.imgur.com/SHo6Fub.jpg';
代码语言:javascript
复制
<img src="http://i.imgur.com/SHo6Fub.jpg" width="300" height="234">

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69149291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档