Salut,

Je cherche à sauvegarder les graphs générés avec JQPLOT.

Malheureusement pour moi ce n'est pas des plus simple.
J'étais partit sur l'utilisation de Canvas2Image mais il semblerait que les Graphs soit des Canvas dans les Canvas etc... ce qui n'est pas pris en charge par Canvas2Image.

J'ai bien trouvé cette bête :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 
 function convertPlotToImage(plot)
 {
        var parentSelector = plot.targetId;
        var titleDiv = $(parentSelector).children('.jqplot-title').get(0);
        var baseCanvas = $(parentSelector).children('.jqplot-base- canvas').get(0);
        var orig = $(baseCanvas).offset();
        var maxX = 0;
        var maxY = 0;
        var titleText = plot.title.text;
        var titleRenderer = new $.jqplot.CanvasTextRenderer({fontSize: '1.1em'});
 
        var textCanvas = document.createElement('canvas');
        var textContext = textCanvas.getContext('2d');
        titleRenderer.setText(titleText,textContext);
    var textWidth = titleRenderer.getWidth(textContext);
    var textHeight = titleRenderer.getHeight(textContext);
 
        textContext = null;
        textCanvas = null;
 
        $(parentSelector).find("canvas").each(function(i,elem)
        {
                var p = $(elem).offset();
                if(maxX < (p.left+elem.width)) maxX = p.left+elem.width;
                if(maxY < (p.top+elem.height)) maxY = p.top+elem.height;
        });
 
        maxX -= orig.left;
        maxY -= orig.top;
 
        if(maxX < textWidth) maxX = textWidth;
 
        var imgCanvas = document.createElement('canvas');
        imgCanvas.background = 'white';
        imgCanvas.width = maxX;
        imgCanvas.height = maxY;
        var imgContext = imgCanvas.getContext('2d');
 
        titleRenderer.setText(titleText,imgContext);
        titleRenderer.draw(imgContext,titleText);
 
        imgContext.drawImage(baseCanvas,0,0);
 
        $(parentSelector).find("canvas").each(function(i,elem)
        {
                if(elem!=baseCanvas)
                {
                        var w = elem.width;
                        var h = elem.height;
                        var p = $(elem).offset();
 
                        imgContext.drawImage(elem,p.left-orig.left, p.top-orig.top);
                }
        });
 
        var oImg = Canvas2Image.saveAsPNG(imgCanvas, true);
 
        if (!oImg)
        {
                alert("Sorry, this browser is not capable of saving " + png + " files!");
                return false;
        }
 
        oImg.id = 'canvasimage';
 
        $(parentSelector).empty();
        $(parentSelector).prepend(oImg);
 
        imageContext = null;
        imageCanvas = null;
 }
Mais ça ne fonctionne pas non plus...

Auriez vous une idée de comment si prendre ?