Javascript 当背景图像处于';它放大了吗?

Javascript 当背景图像处于';它放大了吗?,javascript,reactjs,image,canvas,fabricjs,Javascript,Reactjs,Image,Canvas,Fabricjs,我正在使用。我的画布是800x800像素,画布背景图像是1920x1080像素 放大后,我只能平移照片的一部分,其他部分不可见 注意:我使用Shift键进行平移 将背景照片适合画布的方法是什么,如下所示: 我希望避免从传入图像进一步缩小。它变得太小了,这是不必要的 注意:我正在使用这个 下面是我当前的代码和堆栈片段 var canvas=newfabric.canvas('c'); var json=“{”version:“3.1.0”,“objects:“{”type:“grou

我正在使用。我的画布是
800x800
像素,画布背景图像是
1920x1080
像素

  • 放大后,我只能平移照片的一部分,其他部分不可见

    注意:我使用Shift键进行平移

  • 将背景照片适合画布的方法是什么,如下所示:

  • 我希望避免从传入图像进一步缩小。它变得太小了,这是不必要的

  • 注意:我正在使用这个

    下面是我当前的代码和堆栈片段
    var canvas=newfabric.canvas('c');
    var json=“{”version:“3.1.0”,“objects:“{”type:“group”,“version:“3.1.0”,“originX:“left”,“originY:“top”,“left:”1656.26,“top:”355.65,“width:”76.48,“height:”76,“fill:”rgb(0,0,0)”,“stroke:”null,“strokeWidth:”0,“strokeDashArray:”null,“strokeLineCap:“butt”,“strokeDashOffset:”0,“strokeLineJoin:”0,“strokeLineJoin:“miter”,“stroker”,“strokeIterLimit:”4,“scaleX:”1,“sca,“angle”:0,“flipX”:false,“flipY”:false,“opacity”:1,“shadow”:null,“visible”:true,“clipTo”:null,“backgroundColor”:“fillRule”:“nonzero”,“paintFirst”:“fill”,“globalCompositeOperation”:“source over”,“transformMatrix”:null,“skewX”:0,“skewY”:0,“id”:“1298”,“Object”:[{“type”:“rect”,“version”:“3.1.0”,“originX”:“left”:“left”,“originY”:“top”,“left”:-20”,“top”:-13,”宽度:35,“高度”:50,“填充”:“#0000ff”,“笔划”:空,“笔划宽度”:1,“笔划DashArray”:空,“笔划线帽”:“butt”,“笔划DashOffset”:0,“笔划线连接”:“miter”,“strokeMiterLimit”:4,“scaleX”:1,“scaleY”:1,“angle”:0,“flipX”:false,“不透明度”:1,“阴影”:空,“可见”:真,“clipTo”:空,“backgroundColor”:“fillRule”:“非零”paintFirst:“fill”,“globalCompositeOperation:“source over”,“transformMatrix:”null,“skewX:”0,“skewY:”0,“rx:”0,“ry:”0,“id:”1298“,“{”type:”text“,”version:”3.1.0“,”originX:”center“,”originY:”top“,”top:”38,“width:”32.99,“height:”20.34,“fill:“red”,“stroke:”null,“strokedaweWidth:”1,“strokeDashArray:”null,“strokeDashWidth:”1,“strokeArray:strokeDashOffset:0,“strokeLineJoin”:“斜接”、“StrokeMiterLit”:4,“scaleX”:1,“scaleX”:1,“角度”:0,“flipX”:false,“flipY”:false,“不透明度”:1,“阴影”:null,“可见”:true,“clipTo”:null,“backgroundColor”:“白色”、“fillRule”:“非零”,“paintFirst”:“填充”、“globalCompositeOperation”:“源代码覆盖”、“transformMatrix”:null,“skewX”:0,“skewY”:0,“skewY”:0,“文本”:“Rect”fontSize“:18,“fontWeight”:“normal”,“fontFamily”:“Quicksand”,“fontStyle”:“normal”,“lineHeight”:1.16,“underline”:false,“overline”:false,“linethrough”:false,“textAlign”:“left”,“textBackgroundColor”:“charSpacing”:0,“styles”:{}}}]}],“backgroundImage”:{“type”:“image”,“version”:“3.1.0”,“originX”:“left”,“originY”,“originY”:“top”,“left”,“left”:0”,“top”:宽度:1920”高度:1080,“填充”:“rgb(0,0,0)”,“笔划”:空,“笔划宽度”:0,“笔划DashArray”:空,“笔划线帽”:“butt”,“笔划DashOffset”:0,“笔划线连接”:“miter”,“strokeMiterLimit”:4,“scaleX”:1,“scaleY”:1,“angle”:0,“flipX”:false,“不透明度”:1,“阴影”:空,“可见”:真,“clipTo”:空,“backgroundColor”:“fillRule”:“非零”,“paintFirst”:”:”fill、“globalCompositeOperation”:“source over”、“transformMatrix”:null、“skewX”:0、“skewY”:0、“crossOrigin”:“cropX”:0、“cropY”:0、“src”:https://i.hizliresim.com/0pIPiv.jpg“,”过滤器“:[]}”
    loadFromJSON(json,()=>canvas.renderal(),(o,object)=>{
    object.on('选定',()=>{
    console.log(object.id);
    });
    canvas.selection=false;
    }
    );
    //canvas.setBackgroundImage('https://i.hizliresim.com/iBHC0t.jpg,canvas.renderAll.bind(canvas));
    //https://i1.wp.com/onideal.com/wp-content/uploads/2020/03/Schlafzimmer-Grundriss-ideale-Position-Bett-Moebel-Kleiderschrank-dreieckchen-4-780x646.jpg
    //杜尼亚https://hizliresim.com/0pIPiv.jpg
    //var uniqid=“0”;
    var-uniqids=0;
    $(“#门”)。在(“点击”上,功能(e){
    rect=新结构。rect({
    id:uniqid,
    左:40,,
    前40名,
    宽度:35,
    身高:50,
    填充:“蓝色”,
    笔划:“蓝色”,
    冲程宽度:5,
    笔划制服:错,
    哈斯:是的,
    });  
    var uniqid=uniqids.toString();
    var text=new fabric.text(uniqid{
    尺寸:30,
    原文:“中心”,
    原创:“对”
    });
    var group=new fabric.group([rect,text]{
    左:0,,
    前100名,
    });
    canvas.add(组);
    uniqids++;
    canvas.on('selection:cleared',c=>{
    控制台日志(“空”);
    });
    canvas.selection=false;
    });
    //*****************************
    canvas.on('mouse:wheel',函数(opt){
    var delta=选择e deltaY;
    var zoom=canvas.getZoom();
    缩放*=0.999**delta;
    如果(缩放>20)缩放=20;
    如果(缩放<0.01)缩放=0.01;
    canvas.setZoom(缩放);
    opt.e.preventDefault();
    选择e.停止播放();
    })
    $('#getid')。单击(函数(){
    var activeObject=canvas.getActiveObjects();
    警报(canvas.getActiveObject().id);
    });
    //***************************************
    $(#保存”)。在(“单击”上,函数(e){
    $(“.save”).html(canvas.toSVG());
    });
    $(“#删除”)。单击(函数(){
    var activeObject=canvas.getActiveObjects();
    canvas.discardActiveObject();
    canvas.remove(…activeObject);
    });
    $(“#btnResetZoom”)。打开(“单击”,函数(e){
    setViewportTransform([1,0,0,1,0,0]);
    });
    canvas.on('mouse:wheel',函数(opt){
    var delta=选择e deltaY;
    var zoom=canvas.getZoom();
    缩放*=0.999**delta;
    如果(缩放>20)缩放=20;
    如果(缩放<0.01)缩放=0.01;
    zoomToPoint({x:opt.e.offsetX,y:opt.e.offsetY},zoom);
    opt.e.preventDefault();
    选择e.停止播放();
    });
    var shiftKeyDown
    
    new fabric.Image.fromURL('https://i.hizliresim.com/0pIPiv.jpg', (img) => {
      img.set({
        left: 0,
        top: 0
      });
      canvas.add(img);
    });
    
    img.scaleToHeight(800);
    img.scaleToWidth(800);