pChart 2.0图像地图&在同一时间缓存?

时间:2013-04-08 00:43:57

标签: php caching charts imagemap pchart

是否可以同时使用图像映射并缓存图表? 启用缓存时,不再创建图像映射。 我需要有图像映射,以便在鼠标悬停时显示该值,但我希望能够缓存图表以显着减少我的CPU负载。 我无法在任何地方找到关于此的信息,而且pChart论坛很乱。

2 个答案:

答案 0 :(得分:0)

使用当前版本(2.1.3),这是不可能的。仅当pChart实际绘制图像时才创建图像映射,即稍后当您从缓存中抓取图像时,图像映射不可用。

要解决此问题,您可以自行缓存图像映射。关于http://wiki.pchart.net/doc.imagemaps.fundamentals.html上的例子你可以沿着这些方向做点什么

//initialise the map
$myPicture->initialiseImageMap("ImageMapBarChart", IMAGE_MAP_STORAGE_FILE, "BarChart", "../tmp");
//draw the chart
$Settings = array("RecordImageMap" => TRUE);
$myPicture->drawBarChart($Settings);
//the image map is ready for you here
//so before you output the chart get the map with dumpImageMap() and copy it to YOUR OWN CACHE
$myPicture->dumpImageMap("ImageMapBarChart", IMAGE_MAP_STORAGE_FILE, "BarChart", "../tmp");

我知道这是一个老问题,但我希望这会有所帮助。

答案 1 :(得分:0)

我能够使用以下代码使其工作。我为论坛的格式,限制道歉。我还必须修改pImage.class以不删除tmp文件,因此它们被保存用于缓存图像。

if ( $myCache->isInCache($ChartHash)) {
/* Retrieve the image map */
if (isset($_GET["ImageMap"]) || isset($_POST["ImageMap"])) {
$StorageFolder = PCHART_PATH . "/cache/imageMap";
$UniqueID = "AreaChart".$ChartHash;
if (file_exists($StorageFolder."/".$UniqueID.".map")) {
$Handle = @fopen($StorageFolder."/".$UniqueID.".map", "r");
if ($Handle) { while (($Buffer = fgets($Handle, 4096)) !== false) { echo $Buffer; } }
fclose($Handle);
}
}
/* Output cached image */
$myCache->strokeFromCache($ChartHash,"pictures/drawAreaChart.".$ChartHash.".png");
}