首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript -图像采集中心

JavaScript -图像采集中心
EN

Stack Overflow用户
提问于 2019-09-11 14:06:36
回答 1查看 43关注 0票数 1

我得到了一张图片,大小都可以,但我需要取中心面积86x86。另外,在加载新映像时,我还必须在javascript中这样做,以替换旧的映像。

在代码的末尾,我需要用新的映像更新我的src。

代码语言:javascript
复制
function loadedImage(elem,gCount){
            var crop = { //just messing with numbers
                top : 10,
                left : 10,
                right : 20,
                bottom : 20,
            };
            var file = elem.files[0]; //I take the loaded image
            var img = document.getElementsByName('imag')[gCount]; //I take the interessed <img>

            var canvas = document.createElement("canvas"); //create canvas
            canvas.width = crop.right - crop.left; //set dimensions
            canvas.height = crop.bottom - crop.top;
            var ctx = canvas.getContext("2d"); // so we can draw
            var image = new Image(); 
            image.setAttribute('crossOrigin', 'anonymous');
            image.width = img.width;
            image.height = img.height;

            image.src = window.URL.createObjectURL(file);

            ctx.drawImage(image, -crop.left, -crop.top);
            image.src = canvas.toDataURL("image/png");
            img.src = image.src;
        }

没有显示图像。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-11 19:41:22

使用load事件侦听器等待加载图像。一旦准备好了,你就可以开始画画了。

要绘制图像的中心部分,源x坐标应该是图像宽度的一半,减去裁剪宽度的一半。(源y坐标可以用类似的方式计算。)

代码语言:javascript
复制
var input = document.getElementsByName('input')[0];

input.addEventListener('change', function (e) {
  var file = e.target.files[0];
  drawCroppedImage(file, 86, 86);
});

function drawCroppedImage(file, w, h) {
  var canvas = document.getElementById('canvas');
  canvas.width = w;
  canvas.height = h;
  var ctx = canvas.getContext('2d');
  var image = new Image();
  
  image.addEventListener('load', function (e) {
    var sx = (image.width / 2) - (w / 2),  // Source X
        sy = (image.height / 2) - (h / 2), // Source Y
        dx = 0, // Destination X
        dy = 0; // Destination Y

    ctx.drawImage(image, sx, sy, w, h, dx, dy, w, h);
  });
  
  image.src = URL.createObjectURL(file);
}
代码语言:javascript
复制
<input type="file" name="input">
<br><br>
<canvas id="canvas" width="86" height="86"></canvas>

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

https://stackoverflow.com/questions/57890972

复制
相关文章

相似问题

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