2015-10-18 7 views
5

मैं चार्ट.जेएस ग्राफ़िंग लाइब्रेरीज़ का उपयोग करके बनाए गए मेरे चार्ट की प्रति सहेजने का प्रयास कर रहा हूं। जब मैं .png छवि को प्रदर्शित या सहेजने के लिए .toBase64Image() फ़ंक्शन का उपयोग कर रहा हूं तो मुझे एक खाली छवि मिल रही है। मैंने एक आईएमजी टैग में प्रदर्शित करने और PHP के साथ छवि को सहेजने का प्रयास किया है। save64Img छवि को प्रदर्शित/सहेजने के लिए मेरा कार्य है। क्या इस सुविधा का उपयोग कर किसी के पास कोई भाग्य है?खाली पीएनजी छवि। toBase64Image() फ़ंक्शन

lineOptions = { 
     scaleShowGridLines : true, 
     scaleGridLineColor : "rgba(0,0,0,.05)", 
     scaleGridLineWidth : 1, 
     bezierCurve : false, 
     pointDot : true, 
     pointDotRadius : 4, 
     pointDotStrokeWidth : 1, 
     pointHitDetectionRadius : 20, 
     datasetStroke : true, 
     datasetStrokeWidth : 1, 
     datasetFill : true, 
     responsive: true,  
     scaleOverride : true, 
     scaleSteps : 5, 
     scaleStepWidth : 20, 
     scaleStartValue : 0 

    } 

    lineChart = { 
      labels : label, 
      datasets : [ 
       { 
        label: "stat1", 
        fillColor : "rgba(128,0,0,0.2)", 
        strokeColor : "rgba(128,0,0,1)", 
        pointColor : "rgba(128,0,0,1)", 
        pointStrokeColor : "#fff", 
        pointHighlightFill : "#fff", 
        pointHighlightStroke : "rgba(128,0,0,1)", 
        data : stat1 
       }, 
       { 
        label: "stat2", 
        fillColor : "rgba(151,187,205,0.2)", 
        strokeColor : "rgba(151,187,205,1)", 
        pointColor : "rgba(151,187,205,1)", 
        pointStrokeColor : "#fff", 
        pointHighlightFill : "#fff", 
        pointHighlightStroke : "rgba(151,187,205,1)", 
        data : stat2 
       } 
      ] 

    }; 

var myChart = new Chart(ctx).Line(lineChart, lineOptions); 

save64Img(myChart.toBase64Image()); 

---------- 

<?php 
$data = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $img)); 

file_put_contents('/tmp/image.png', $data); 

?> 

उत्तर

0

आप एक अतिरिक्त कॉलबैक से अधिक save64Img(myChart.toBase64Image()) कॉल करनी होगी। आप विकल्पों

lineOptions = { 
    onAnimationComplete: function() { 
     save64Img(myChart.toBase64Image()); 
    } 
} 
0

मैं जानता हूँ कि यह थोड़ी देर के बाद आप प्रश्न पूछा है हो गया है कि करने के लिए इस कॉलबैक जोड़ सकते हैं, लेकिन Chart.js में v2 आप एनीमेशन विकल्प के भीतर onComplete विधि का उपयोग करने के लिए है।

animation: { 
    duration: 1500, 
    onComplete: function (animation) { 
     this.toBase64Image(); 
} 
संबंधित मुद्दे