解决threejs导入fabric画布时出现的跨域问题
问题背景:
使用threejs创建三维空间并导入模型,希望实现图片能够自己上传并放到模型上,需要使用到canvas画布,然后将整个画布以材质贴图的形式放到模型上,而canvas中的fabricjs能够解决图片的上传和随意的在画布上修改图片的大小、位置、旋转角度。
但是如果使用fabricjs上传远程路径的图片就会导致画布被污染而无法放入到模型上,主要原因还是跨域问题,那么如何解决呢?
解决方案:
var s = new fabric.Canvas('canvas');
s.backgroundColor = 'rgb(255, 255, 255)'; // 设置画布背景
fabric.Image.fromURL('https://xxxxxxx.aliyuncs.com/m2_photos/20240624032557293-e1yzhr', (oImg)=> {
oImg.scale(0.1);
// 这里是设置图片的大小和位置,可省略
var canvasWidth = s.width;
var canvasHeight = s.height;
var left = canvasWidth / 2 ;
var top = canvasHeight / 2 ;
oImg.set({
left: left - 80,
top: top -40
});
console.log("oImg : ",oImg);
s.add(oImg);
}, {crossOrigin: 'anonymous'}); // 在这里加{crossOrigin:'anonymous'}