帆布todataurl损坏的图像

时间:2013-04-05 08:25:41

标签: javascript base64 jspdf

我有一个应用程序,允许用户签署文档,在画布上绘制标记。

function initialize(xsize, ysize) {
         // get references to the canvas element as well as the 2D drawing context
         sigCanvas = document.getElementById("canvassignature");
         sigCanvas.width = xsize;
         sigCanvas.height = ysize;
         var context = sigCanvas.getContext("2d");
         context.strokeStyle = 'Black';
         // This will be defined on a TOUCH device such as iPad or Android, etc.
         var is_touch_device = 'ontouchstart' in document.documentElement;

         if (is_touch_device) {
            // create a drawer which tracks touch movements
            var drawer = {
               isDrawing: false,
               touchstart: function (coors) {
                  context.beginPath();
                  context.moveTo(coors.x, coors.y);
                  this.isDrawing = true;
               },
               touchmove: function (coors) {
                  if (this.isDrawing) {
                     context.lineTo(coors.x, coors.y);
                     context.stroke();
                  }
               },
               touchend: function (coors) {
                  if (this.isDrawing) {
                     this.touchmove(coors);
                     this.isDrawing = false;
                  }
               }
            };

然后我使用todataurl从画布中获取图像,然后将其保存在本地存储中。

function save_canvas(index) {

          sigCanvas = document.getElementById("canvassignature");
          var img = sigCanvas.toDataURL('image/jpeg');

          window.localStorage.setItem("fm"+ index, img);
          sigCanvas.width = sigCanvas.width;
      }

现在我想使用jsPDF将该符号导出为pdf。 因为我应该在png上使用jpeg图像,所以我使用toDataUrl('image,JPEG')。 当我从localStorage重新拍摄我的照片时,

function firma(titlenum) {
    canvasnum = titlenum;
    xcoord = (window.event.clientX-50);
    ycoord = (window.event.clientY-50);
    idsign = "fm" + titlenum;
    var img_firma = window.localStorage.getItem(idsign);
    if (null != img_firma && img_firma != "") {
        alert(img_firma);
        $('#pagesign').hide();
        $('#pagesignimg').show(); 
        var toAppend = new Image;
        toAppend.title = 'Firma';
        toAppend.src = img_firma;
        toAppend.className = "imgfirma";
        $('#div_firmaimg').empty();
        document.getElementById('div_firmaimg').appendChild(toAppend);
        document.getElementById('signnascosteimg').click();
    } else {
        alert(img_firma);
        $('#pagesign').show(); 
        $('#pagesignimg').hide();
        initialize(0, 0);
        document.getElementById(idsign).className = "editsign";
        document.getElementById('signnascoste').click();
    }   
}

base64结果已损坏,如下所示:

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAICAgICAQICAgICAgIDAwYEAwMDAwcFBQQGCAcICAgHCAgJCg0LCQkMCggICw8LDA0ODg4OCQsQEQ8OEQ0ODg7/2wBDAQICAgMDAwYEBAYOCQgJDg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg7/wAARCAKGBRADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+f+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK

我无法理解为什么......

0 个答案:

没有答案