2012-11-06 87 views
2

我正在创建图像编辑器类型的web应用程序。我有一个主要的div它将包含很多div里面。将div的内容转换为图像

当用户点击保存按钮时,我想将div保存为文件夹中的图像。 我试着用Canvas.toDataURL()做它,但后来我发现我不能在div标签(main div)内放置canvas标签。我也试过imagegrabscreen() php的功能,但它在整个页面加载之前捕获了屏幕,所以它没用。

任何人都可以帮助我,并建议一种方法来实现这个使用PHP或JavaScript?

+0

imagegrabscreen抓住服务器的截图,所以我猜测你正在使用http:// localhost对服务器本身进行操作? – lostsource

回答

3

为什么你使用一堆div当你可以只使用一个canvas并使用适当的画布功能绘制它?

plenty of examples你想要做什么,如this one

+0

我不想让油漆像东西。我正在使用一些包含多个图像和文本的div,用户可以编辑它们,然后将其保存为图像。 – shubhi1910

+0

那么,你可以把这些'div's绘制在画布上。 –

0
use this code to save image from canvas 

function save_canvas_img() 
      { 

       var canvas = document.getElementById("your id"); 
       var canvasData = canvas.toDataURL("image/png"); 
       var ajax = new XMLHttpRequest(); 
       ajax.open("POST",'save.php',false); 
       ajax.setRequestHeader('Content-Type', 'application/your page name'); 
       ajax.send(canvasData); 

       alert('You have successfully saved this image'); 

      }`enter code here` 
here save.php 
if (isset($GLOBALS["HTTP_RAW_POST_DATA"])) 
{ 

    $imageData=$GLOBALS['HTTP_RAW_POST_DATA']; 


    $filteredData=substr($imageData, strpos($imageData, ",")+1); 

    $unencodedData=base64_decode($filteredData); 
    // Need to decode before saving since the data we received is already base64 encoded 

    //echo "unencodedData".$unencodedData; 
    $randomName = mktime(). rand(99999,9999999). '.png'; 



    $fp = fopen('foldername/'.$randomName, 'wb'); 
    fwrite($fp, $unencodedData); 
    fclose($fp);}`enter code here`