2013-04-08 4 views
0

이미지 맵을 사용하고 차트를 동시에 캐시 할 수 있습니까? 캐싱을 사용하면 이미지 맵이 더 이상 생성되지 않습니다. 이미지 맵을 가져야하므로 값 위에 마우스를 올려 놓을 때 값이 표시됩니다. 그러나 CPU를 크게 줄이기 위해 차트를 캐싱 할 수 있기를 원합니다. 나는 어디서나이 정보를 찾을 수 없었고 pChart 포럼은 혼란 스럽다.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"); 

나는이 오래된 질문 알아요,하지만 난이 도움이되기를 바랍니다.

0

다음 코드를 사용하여이 작업을 수행 할 수있었습니다. 포럼의 형식 및 제한 사항에 대해 사과드립니다. tImp 파일을 삭제하지 않도록 pImage.class를 수정해야했기 때문에 캐시 된 이미지에 저장됩니다.

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"); 
}