2016-05-16 95 views
-1

我試圖通過PHP使用Google QR代碼生成器創建動態圖像,然後想要將該圖像保存到服務器上的臨時目錄中。我想我很接近,但是我經常不用PHP編寫代碼,所以我需要一些額外的指導。PHP - 在服務器上保存動態創建的圖像

這裏是我的代碼:

header("content-type: image/png"); 
    $url = "https://chart.googleapis.com/chart?chs=177x177&cht=qr&chl=MyHiddenCode&choe=UTF-8"; 
    $qr_image = imagecreatefrompng(file_get_contents($url)); 
    $cwd = getcwd(); 
    $cwd = $cwd . "/temp"; 
    $save = "$cwd"."/chart123.png"; 
    imagepng($qr_image); 
    chmod($save,0755); 
    imagepng($qr_image,$save,0,NULL); 

感謝您的任何和所有的洞察力。

+0

你有什麼錯誤? –

+0

https://github.com/Pamblam/EasyImage - >'EasyImage :: Create($ url) - > save($ save);'你的代碼看起來不錯,可能需要調整目錄中的權限保存爲' –

+0

當你運行'chmod()'時文件是否存在? – WillardSolutions

回答

1

除非實際上對圖像進行更改(調整大小,繪製等),否則不需要使用GD創建新圖像。您只需使用file_get_contents即可獲取圖像,而file_put_contents可將其保存在某處。爲了顯示圖像,只需在發送標題後回顯你從file_get_contents得到的回覆。

例子:

<?php 
//debug, leave this in while testing 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

$url = "url for google here"; 
$imageName = "chart123.png"; 
$savePath = getcwd() . "/temp/" . $imageName; 

//try to get the image 
$image = file_get_contents($url); 

//try to save the image 
file_put_contents($savePath, $image); 

//output the image 

//if the headers haven't been sent yet, meaning no output like errors 
if(!headers_sent()){ 
    //send the png header 
    header("Content-Type: image/png", true, 200); 

    //output the image 
    echo $image; 
} 
+0

謝謝!!!!!! – azsl1326

1

我想你已經太多的代碼,使用類似:

<?php 
header("content-type: image/png"); 
$qr_image = imagecreatefrompng("https://chart.googleapis.com/chart?chs=177x177&cht=qr&chl=MyHiddenCode&choe=UTF-8"); //no need for file_get_contents 
$save = getcwd()."/temp/chart123.png"; 
imagepng($qr_image,$save); //save the file to $save path 
imagepng($qr_image); //display the image 

請注意,您不需要使用壽GD庫自圖像已經由googleapis生成,這就足夠了:

header("content-type: image/png"); 
$img = file_get_contents("https://chart.googleapis.com/chart?chs=177x177&cht=qr&chl=MyHiddenCode&choe=UTF-8"); 
file_put_contents(getcwd()."/temp/chart123.png", $img); 
echo $img; 
相關問題