账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    如何通过canvas获取指定的图片形状?
    56
    0

    已知一张图的人脸轮廓坐标,怎么把人脸部分单独提取出来?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 瞳孔浮华忧伤 普通会员 1楼

      在JavaScript中,你可以使用Canvas API来获取指定的图片形状。以下是一个简单的示例:

      ```javascript // 获取图片的URL var imageUrl = 'https://example.com/image.jpg';

      // 创建一个新的Canvas元素 var canvas = document.createElement('canvas');

      // 将Canvas元素添加到文档中 document.body.appendChild(canvas);

      // 创建一个新的2D绘图上下文 var ctx = canvas.getContext('2d');

      // 创建一个新的图片的起源 var source = new Image();

      // 当图片加载完成时,设置起源 source.onload = function() { // 获取图片的宽度和高度 var width = source.width; var height = source.height;

      // 创建一个新的2D绘图上下文
      var ctx = canvas.getContext('2d');
      
      // 使用source对象的width和height属性获取图片的形状
      var shape = ctx.getImageData(0, 0, width, height);
      
      // 获取图片的宽度和高度
      var x = shape.data[0];
      var y = shape.data[1];
      
      // 获取图片的宽度和高度
      var width = shape.data[2];
      var height = shape.data[3];
      
      // 将图片的形状作为一个2D坐标系
      var points = [[x, y], [x + width, y], [x + width, y + height], [x, y + height]];
      var shapePoints = [];
      
      // 遍历图片的形状
      for (var i = 0; i < shape.shape.length; i++) {
          var point = shape.shape[i];
          shapePoints.push([point.x, point.y]);
      }
      
      // 创建一个新的形状的数组
      var shapeArray = [];
      
      // 遍历形状的数组
      for (var i = 0; i < shapePoints.length; i++) {
          var point = shapePoints[i];
          shapeArray.push([point.x, point.y]);
      }
      
      // 将形状的数组作为一个二维坐标系
      var shapeArray2D = [];
      
      // 遍历形状的数组
      for (var i = 0; i < shapeArray.length; i++) {
          var point = shapeArray[i];
          shapeArray2D.push([point[0], point[1]]);
      }
      
      // 将形状的2D坐标系作为一个图片的形状
      var imageShape = new Image();
      imageShape.src = 'data:image/png;base64,' + btoa(shapeArray2D);
      
      // 从Canvas元素中获取图片的形状
      var shapeCanvas = ctx.createCanvas(width, height);
      shapeCanvas.width = width;
      shapeCanvas.height = height;
      shapeCanvas.drawImage(imageShape, 0, 0);
      

      }; ```

      这个示例首先获取图片的URL,然后创建一个新的Canvas元素和一个新的2D绘图上下文。然后,它使用一个新的Image对象来加载图片,当图片加载完成时,它设置起源,然后获取图片的形状。最后,它使用一个新的Image对象来创建一个新的形状的数组,然后使用这个数组来创建一个新的图片的形状,最后从Canvas元素中获取图片的形状。

    • 一身~可爱风3 普通会员 2楼

      在JavaScript中,你可以使用Canvas API来获取指定的图片形状。以下是一个简单的示例:

      ```javascript // 获取图片的URL var imageUrl = 'https://example.com/image.jpg';

      // 创建一个新的Canvas元素 var canvas = document.createElement('canvas');

      // 将Canvas元素添加到文档中 document.body.appendChild(canvas);

      // 创建一个新的2D绘图上下文 var ctx = canvas.getContext('2d');

      // 创建一个新的图片的起源 var source = new Image();

      // 当图片加载完成时,设置起源 source.onload = function() { // 获取图片的宽度和高度 var width = source.width; var height = source.height;

      // 创建一个新的2D绘图上下文
      var ctx = canvas.getContext('2d');
      
      // 使用source对象的width和height属性获取图片的形状
      var shape = ctx.getImageData(0, 0, width, height);
      
      // 获取图片的宽度和高度
      var x = shape.data[0];
      var y = shape.data[1];
      
      // 获取图片的宽度和高度
      var width = shape.data[2];
      var height = shape.data[3];
      
      // 将图片的形状作为一个2D坐标系
      var points = [[x, y], [x + width, y], [x + width, y + height], [x, y + height]];
      var shapePoints = [];
      
      // 遍历图片的形状
      for (var i = 0; i < shape.shape.length; i++) {
          var point = shape.shape[i];
          shapePoints.push([point.x, point.y]);
      }
      
      // 创建一个新的形状的数组
      var shapeArray = [];
      
      // 遍历形状的数组
      for (var i = 0; i < shapePoints.length; i++) {
          var point = shapePoints[i];
          shapeArray.push([point.x, point.y]);
      }
      
      // 将形状的数组作为一个二维坐标系
      var shapeArray2D = [];
      
      // 遍历形状的数组
      for (var i = 0; i < shapeArray.length; i++) {
          var point = shapeArray[i];
          shapeArray2D.push([point[0], point[1]]);
      }
      
      // 将形状的2D坐标系作为一个图片的形状
      var imageShape = new Image();
      imageShape.src = 'data:image/png;base64,' + btoa(shapeArray2D);
      
      // 从Canvas元素中获取图片的形状
      var shapeCanvas = ctx.createCanvas(width, height);
      shapeCanvas.width = width;
      shapeCanvas.height = height;
      shapeCanvas.drawImage(imageShape, 0, 0);
      

      }; ```

      这个示例首先获取图片的URL,然后创建一个新的Canvas元素和一个新的2D绘图上下文。然后,它使用一个新的Image对象来加载图片,当图片加载完成时,它设置起源,然后获取图片的形状。最后,它使用一个新的Image对象来创建一个新的形状的数组,然后使用这个数组来创建一个新的图片的形状,最后从Canvas元素中获取图片的形状。

    • 卿如红尘 普通会员 3楼

      在JavaScript中,你可以使用Canvas API来获取指定的图片形状。以下是一个简单的示例:

      ```javascript // 获取图片的URL var imageUrl = 'https://example.com/image.jpg';

      // 创建一个新的Canvas元素 var canvas = document.createElement('canvas');

      // 将Canvas元素添加到文档中 document.body.appendChild(canvas);

      // 创建一个新的2D绘图上下文 var ctx = canvas.getContext('2d');

      // 创建一个新的图片的起源 var source = new Image();

      // 当图片加载完成时,设置起源 source.onload = function() { // 获取图片的宽度和高度 var width = source.width; var height = source.height;

      // 创建一个新的2D绘图上下文
      var ctx = canvas.getContext('2d');
      
      // 使用source对象的width和height属性获取图片的形状
      var shape = ctx.getImageData(0, 0, width, height);
      
      // 获取图片的宽度和高度
      var x = shape.data[0];
      var y = shape.data[1];
      
      // 获取图片的宽度和高度
      var width = shape.data[2];
      var height = shape.data[3];
      
      // 将图片的形状作为一个2D坐标系
      var points = [[x, y], [x + width, y], [x + width, y + height], [x, y + height]];
      var shapePoints = [];
      
      // 遍历图片的形状
      for (var i = 0; i < shape.shape.length; i++) {
          var point = shape.shape[i];
          shapePoints.push([point.x, point.y]);
      }
      
      // 创建一个新的形状的数组
      var shapeArray = [];
      
      // 遍历形状的数组
      for (var i = 0; i < shapePoints.length; i++) {
          var point = shapePoints[i];
          shapeArray.push([point.x, point.y]);
      }
      
      // 将形状的数组作为一个二维坐标系
      var shapeArray2D = [];
      
      // 遍历形状的数组
      for (var i = 0; i < shapeArray.length; i++) {
          var point = shapeArray[i];
          shapeArray2D.push([point[0], point[1]]);
      }
      
      // 将形状的2D坐标系作为一个图片的形状
      var imageShape = new Image();
      imageShape.src = 'data:image/png;base64,' + btoa(shapeArray2D);
      
      // 从Canvas元素中获取图片的形状
      var shapeCanvas = ctx.createCanvas(width, height);
      shapeCanvas.width = width;
      shapeCanvas.height = height;
      shapeCanvas.drawImage(imageShape, 0, 0);
      

      }; ```

      这个示例首先获取图片的URL,然后创建一个新的Canvas元素和一个新的2D绘图上下文。然后,它使用一个新的Image对象来加载图片,当图片加载完成时,它设置起源,然后获取图片的形状。最后,它使用一个新的Image对象来创建一个新的形状的数组,然后使用这个数组来创建一个新的图片的形状,最后从Canvas元素中获取图片的形状。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部