2012-02-17 9 views
1

私はQRコードを作成するのにQR google apiを使用していますが、PHPで画像をダウンロードしたいと思います。私はオンラインで見ましたが、役に立たないものは見つけられません。助言がありますか?QRコードのダウンロードリンクを作成するにはどうすればよいですか?

私はそうのようなQRコードを作成しています:

function generateQR($url, $width = 150, $height = 150) { 
    $url = urlencode($url); 
    $image = '<img src="http://chart.apis.google.com/chart?chs='.$width.'x'.$height.'&cht=qr&chl='.$url.'" alt="QR code" width="'.$width.'" height="'.$height.'"/>'; 
    return $image; 
} 

echo(generateQR('http://google.com')); 
+1

file_get_contents oO – dynamic

+0

おそらく関連性があります:http://stackoverflow.com/questions/900207/return-a-php-page-as-an-image – cspray

+0

"PHPで画像をダウンロードする"とはどういう意味ですか?確かにurlencodeでURLをエンコードする必要があります。 – satoshi

答えて

3

あなたが右のヘッダーに画像を取得して出力するために、任意のバイナリセーフ機能を使用することができます。

PHP設定では、allow_fopen_urlがオンになっている必要があります。

ような何か:

function forceDownloadQR($url, $width = 150, $height = 150) { 
    $url = urlencode($url); 
    $image = 'http://chart.apis.google.com/chart?chs='.$width.'x'.$height.'&cht=qr&chl='.$url; 
    $file = file_get_contents($image); 
    header("Content-type: application/octet-stream"); 
    header("Content-Disposition: attachment; filename=qrcode.png"); 
    header("Cache-Control: public"); 
    header("Content-length: " . strlen($file)); // tells file size 
    header("Pragma: no-cache"); 
    echo $file; 
    die; 
} 

forceDownloadQR('http://google.com'); 
+0

もちろん、これは他の出力の前に送る必要があります。出力バッファリングはphp.iniの 'allow_url_fopen = 1'ならば –

1

を、あなたのウェブサーバ上にファイルをダウンロード(して保存)したい場合は、単にこれは、保存するために訪問者のWebブラウザを要求しませんcopy()

copy($url, 'myfile.png'); 

を使用ファイル。

+0

でなければなりません –

関連する問題