第二次加载图片后,Fabric.js画布图片消失

时间:2016-08-17 19:16:30

标签: html5 image canvas

您好我上传图片一旦图片上传,我在画布中加载该图片,我在弹出窗口中创建。 一旦图像加载它出现在我正在执行裁剪功能的弹出窗口,一切正常,但是当我第二次上传图像时 图像出现,但当我点击图像裁剪它图像消失在画布上。 请建议我如何解决这个问题? 这是我的代码

handleImage1= function(e) {
            var mousex = 0;
            var mousey = 0;
            var reader = new FileReader();
            var baseUrl = jQuery("#base-url").val();
            var file = this.files[0];
            var fd = new FormData();
            fd.append("afile", file);
            var mouseDown;
            // only allow one crop. turn it off after that
            var disabled = false;
            var rect;
            var container =       document.getElementById('c1').getBoundingClientRect();
            var canvas1 = new fabric.Canvas('c1');
            var center = canvas1.getCenter();
            //canvas1.add(rect);
            var image;
            var  isDown, origX, origY;
            var rawImageid;
            var result='';
            var object;
            jQuery.ajax({
                type : 'POST',
                url : baseUrl+'personalized/index/saveRawImage',
                data : fd,
                dataType : 'text',
                cache: false,
                beforeSend: function(){
                    jQuery('#divLoading').show();
                  },
                contentType: false,
                processData: false,
                success : function(result) {    
                    result=result;
                   var imgSizeObj;
                fabric.util.loadImage(result, function(img) {
                        image = new fabric.Image(img);
                        image.selectable = false;
                        image.originX= 'center',
                        image.originY= 'center',
                        //image.top=center.top,
                        //image.left=center.left, 
                        imgSizeObj = image.getOriginalSize();
                        width_ratio  = canvas1.width  / image.width;
                        height_ratio = canvas1.height / image.height;
                        if (height_ratio>width_ratio ) {
                                fw = image.width * width_ratio;
                                fh = image.height*fw/image.width;
                            } else {
                                fh = image.height * height_ratio;
                                fw = image.width*fh/image.height;    
                        }
                        if (imgSizeObj.width > canvas1.width || imgSizeObj.height > canvas1.height) {
                              image.set({
                                width: fw,
                                height: fh
                            });
                            }

                        canvas1.add(image);
                        canvas1.centerObject(image);
                        canvas1.renderAll();
                    });
                 // capture the event when the user clicks the mouse button down
                canvas1.on('mouse:down', function(o){
                    isDown = true;
                    var pointer = canvas1.getPointer(o.e);
                    origX = pointer.x;
                    origY = pointer.y;
                    var pointer = canvas1.getPointer(o.e);
                    canvas1.remove(rect);

                    rect = new fabric.Rect({
                        left: origX,
                        top: origY,
                        originX: 'left',
                        originY: 'top',
                        width: pointer.x-origX,
                        height: pointer.y-origY,
                        angle: 0,
                        opacity:0.5,
                        transparentCorners: false,
                            hasControls: false,
hasBorders: false

                    });
                    canvas1.add(rect);
                    canvas1.renderAll()
                });

                  // draw the rectangle as the mouse is moved after a down click
                canvas1.on('mouse:move', function(o){
                        if (!isDown) return;
                        var pointer = canvas1.getPointer(o.e);

                        if(origX>pointer.x){
                            rect.set({ left: Math.abs(pointer.x) });
                        }
                        if(origY>pointer.y){
                            rect.set({ top: Math.abs(pointer.y) });
                        }

                        rect.set({ width: Math.abs(origX - pointer.x) });
                        rect.set({ height: Math.abs(origY - pointer.y) });


                        canvas1.renderAll();
                    });
    canvas1.on('mouse:up', function(o){
          isDown = false;
   });
  jQuery('#cropB').on('click', function() {
       image.selectable = true;
       disabled = true;
       rect.visible = false;
       var cropped = new Image();
        cropped.src = canvas1.toDataURL({
                            left: rect.left,
                            top: rect.top,
                            width: rect.width,
                            height: rect.height
                    });

                fabric.util.loadImage(cropped.src, function(img) {
                    var image1 = new fabric.Image(img);
                    image1.selectable = true;
                    canvas.add(image1);
                    canvas.centerObject(image1);
                    image1.selectable = true;
                    canvas.renderAll();
                });

                canvas1.clear();    
                jQuery('#changePic').modal('hide');

        });

                jQuery('#add_image_custom').on('click',function(){
                         var rawImageValue = jQuery("#rawImages").val();
                         rawImageid = result;
                         if(rawImageValue == 0){                        
                            rawImageValue = result;
                         }else{                     
                            rawImageValue = rawImageValue + ','+ result;
                         }
                         jQuery("#rawImages").val(rawImageValue);       
                         var img = new Image();
                         var center = canvas.getCenter();
                         img.onload = function () {
                            var imgInstance = new fabric.Image(img, {
                                originX: 'center',
                                originY: 'center',
                                top: center.top,
                                left: center.left,
                            });
                            var imgSizeObj = imgInstance.getOriginalSize();
                            //alert(imgSizeObj.width+'|'+imgSizeObj.height+'|'+canvas.width+'|'+canvas.height);
                            width_ratio  = canvas.width  / imgSizeObj.width;
                            height_ratio = canvas.height / imgSizeObj.height;
                            if (height_ratio>width_ratio ) {
                                fw = imgSizeObj.width * width_ratio;
                                fh = imgSizeObj.height*fw/imgSizeObj.width;
                            } else {
                                fh = imgSizeObj.height * height_ratio;
                                fw = imgSizeObj.width*fh/imgSizeObj.height;    
                            }
                            if (imgSizeObj.width > canvas.width || imgSizeObj.height > canvas.height) {
                              imgInstance.set({
                                width: fw,
                                height: fh
                            });
                            }
                            if(canvas.width<400)
                            {
                                imgInstance.scaleX = canvas.width*0.9/imgInstance.width;
                                imgInstance.scaleY = imgInstance.scaleX;
                            }
                            imgInstance.RawImageId=rawImageid;  
                            canvas.add(imgInstance);                        
                        }   
                        img.src = result;

                    reader.readAsDataURL(e.target.files[0]);
                     canvas1.clear();
                     jQuery('#changePic').modal('hide');




    });
        /*Shrink fit code end here---------------------------------*/

        //imgpopup.src = src1;
                    //canvas1.add(image);

                    //canvas1.renderAll();
                    //jQuery('#main-image').attr('src',result);
                    //jQuery('#main-image').show();
                    setTimeout(function(){
                    jQuery('#changePic').modal();
                    jQuery('#divLoading').hide();                                           
                    }, 300);


                },
                error : function(xhr, status) {
                    //console.log(status);
                    //console.log(xhr); //  
                    jQuery('.loading').hide();                      
                }
            });
    }

0 个答案:

没有答案