Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将谷歌图表另存为图像_Php_Image_Charts - Fatal编程技术网

Php 将谷歌图表另存为图像

Php 将谷歌图表另存为图像,php,image,charts,Php,Image,Charts,因此,经过数小时的网络搜索、谷歌搜索和浏览,我无法找到解决问题的方法 我从谷歌图表上得到了一张折线图。我想把它转换成PNG,保存在服务器上,然后插入MySQL数据库 听起来很简单,但我不能让它工作。此网站的脚本不再工作(至少不在此处)->不工作 第二个选项是旧选项: $imageData = file_get_contents('http://chart.apis.google.com/chart... etc'); 我不能使用它,因为它不再受支持,也不能从中获得一些像样的质量 这里有

因此,经过数小时的网络搜索、谷歌搜索和浏览,我无法找到解决问题的方法

我从谷歌图表上得到了一张折线图。我想把它转换成PNG,保存在服务器上,然后插入MySQL数据库

听起来很简单,但我不能让它工作。此网站的脚本不再工作(至少不在此处)->不工作

第二个选项是旧选项:

$imageData =     file_get_contents('http://chart.apis.google.com/chart... etc');
我不能使用它,因为它不再受支持,也不能从中获得一些像样的质量

这里有没有人能给我的问题提供一个好的指导或帮助

编辑:

我使用了战马的代码和EriC的代码


因此,现在我正在将图表显示为DIV中的图像,我想将此图像保存在服务器上,并更新mysql,以便将来在PDF文件中使用它。

访问站点时,将其粘贴到控制台中(覆盖故障函数)

在JS中,它正在搜索iframe bla bla来获取svg


要自动保存图像,您可以通过编程方式调用该方法

document.body.addEventListener("load", function() {

        saveAsImg( document.getElementById("pie_div")); // or your ID

    }, false );

为了在服务器端保存图像,本文可能会有所帮助

更新
将图像发布到PHP(index.js)

save.php

<?php
    // Get the request
    $data = $_GET['data'];

    // Save to your DB.
?>

您可以使用
grChartImg
库。这是一个跨浏览器的解决方案,甚至支持旧版本的IE(8及更早版本)。它具有许多功能,如下载图像、上载到服务器、在对话框中显示图像等

有关更多信息,请参阅


希望能对您有所帮助。

这并不是一个真正的答案,但在将来可能会是一个答案,如果您只是想重新获得该功能,这是不必要的。以下URL显示了可视化API的所有当前问题和功能请求


该功能请求获得的明星/选票越多,他们查看该功能的机会就越高

我也有同样的问题-将谷歌图表另存为服务器上的图像。这里没有一个答案适合我。最后我得到了解决方案,但有一些bug(只在Chrome浏览器中工作)。作为基础,我在这里使用了脚本,并对我的项目进行了一些更改。我使用jquery将生成的图形图像导入到我的服务器。 这是一个我想转换成图像并保存的图形

用于转换为图像并导入到服务器的脚本

函数getImgData(chartContainer){
var chartArea=chartContainer.getElementsByTagName('svg')[0].parentNode;
var svg=chartArea.innerHTML;
var doc=chartContainer.ownerDocument;
var canvas=doc.createElement('canvas');
canvas.setAttribute('width',chartArea.offsetWidth);
canvas.setAttribute('height',chartArea.offsetHeight);
canvas.setAttribute(
“风格”,
'位置:绝对;'+
'顶部:'+(-chartArea.offsetHeight*2)+'px;'+
'左:'+(-chartArea.offsetWidth*2)+'px;';
doc.body.appendChild(画布);
canvg(canvas,svg);
var imgData=canvas.toDataURL(“image/png”);
canvas.parentNode.removeChild(canvas);
返回imgData;
}
函数toImg(图表容器、imgContainer){
var doc=chartContainer.ownerDocument;
var img=doc.createElement('img');
var myimg=img.src=getImgData(chartContainer);
//在这里,我使用jquery将解码图像导入服务器上的hidden.php
$.ajax({
方法:“张贴”,
url:“hidden.php”,
数据:{name:myimg}});
while(imgContainer.firstChild){
imgContainer.removeChild(imgContainer.firstChild);
}
imgContainer.appendChild(img);
}

为什么你不能让它工作?提供类似JSFIDLE的东西可能吗(或者实际的站点)?这是一个私有的后端,所以我不能给出这个网站。但是来自战马的示例不起作用。我仍然试图使用它,但没有成功。那怎么办?类似于
contentDocument
的东西在图表中不存在,奇怪的是,他们使用它。我会尽快尝试!我会让你知道的,谢谢你的帮助。好的,我现在开始工作了,当我按下按钮时,一切正常。现在我想知道,当页面加载时,图像会被放入数据库中。这当然是一个不同的问题,你的文章标题不会与这个主题的内容相对应。如果你更新你的帖子,我也会更新我的答案;)我更新了我的帖子,我想很多人都在搜索你的问题和答案。哦,我原来的帖子是这样写的:“我从谷歌图表中得到了一个折线图。我想把它转换成PNG,保存在服务器上,然后插入MySQL数据库。”所以我现在迈出了第一步,现在我需要保存它,如果我能保存它,这就是我所需要知道的。
function saveToPHP( imgdata ) {

    var script = document.createElement("SCRIPT");

    script.setAttribute( 'type', 'text/javascript' );
    script.setAttribute( 'src', 'save.php?data=' + imgdata );

    document.head.appendChild( script );
}

function save() {

    var canvas = document.getElementById("canvas"), // Get your canvas
        imgdata = canvas.toDataURL();

    saveToPHP( imgdata );
}

function drawOnCanvas() {

    var canvas = document.getElementById("canvas"), // Get your canvas
        ctx = canvas.getContext("2d");

    ctx.strokeStyle = "#000000";
    ctx.fillStyle = "#FFFF00";
    ctx.beginPath();
    ctx.arc(100,99,50,0,Math.PI*2,true);
    ctx.closePath();
    ctx.stroke();
    ctx.fill();
}

drawOnCanvas(); // Test
save();
<?php
    // Get the request
    $data = $_GET['data'];

    // Save to your DB.
?>