質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

4回答

4864閲覧

qrcodeをgif, jpgなどの画像としてフォルダに保存

hiroshima

総合スコア7

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2016/10/13 13:36

javascriptやPHPで画面にqrcodeを作成し表示できます。
qrcodeをgif,jpgなど画像としてサーバー、ローカルでどちらでもいいので保存したいです。
良い方法がありましたら、お教えください。
お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

PHP では file_put_contents 関数を使用してファイルを保存することができます。

PHP: file_put_contents - Manual

投稿2016/10/13 14:31

chitoku

総合スコア1610

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiroshima

2016/10/13 23:45

ありがとうございます。 実際に使ってみたのですが、画像として保存できません。私のやり方が悪いと思うのですが、ご指摘頂ければ幸いです。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>ファイルとして保存したい</title> </head> <body> <div> <?php # h()関数☆レシピ221☆(安全にブラウザで値を表示したい)を読み込みます☆レシピ041☆(他のファイルを取り込んで利用したい)。 require_once '../../../../lib/h.php'; # ファイル名を設定します。 $fileName = '../../../../data/output/qr_code.gif'; if (! is_dir(dirname($fileName))) { die('保存するディレクトリが存在しません。'); } # QRコードにする文字列を設定します。 $string ="\r\nhttp://hiroshima.whitesnow.jp/qrcode_data_print/htdocs/php-recipe/04/work/get.php?id=5&name=hiroshima"; $encString = rawurlencode($string); # QRコードの要素をセットします。 $parts = array( 'cht' => 'qr', // QRコード 'chs' => '150x150', // サイズ 'choe' => 'Shift_JIS', // 出力エンコード 'chl' => $encString, // QRコードにする文字列 ); # QRコードのURIを生成します。 $qrcode = assembledUri($parts); # QRコードを出力します。 echo '<img src="' . $qrcode . '" alt="QRコード" />'; $img = file_get_contents($qrcode); header('Content-type: image/gif'); # グラフのURIを組み立てるユーザー定義関数を定義します。 function assembledUri($parts) { $uri = 'http://chart.apis.google.com/chart?'; $query = ''; foreach ($parts as $key => $val) { if ($query != '') { $query .= '&amp;'; } $query .= "$key=$val"; } $uri .= $query; return $uri; } // 結果をファイルに書き出します file_put_contents($fileName, $img); # 画像を破棄しメモリを解放します。 imagedestroy($img); ?> </div> </body> </html>
guest

0

javascriptやPHPで画面にqrcodeを作成し表示できます。
qrcodeをURIでなく、gif,jpgなど画像としてサーバー、ローカルでどちらでもいいので保存したいです。
良い方法がありましたら、お教えください。
お願いします。
var_dump($qrcode);を使って
string(218) "http://chart.apis.google.com/chart?cht=qr&chs=150x150&choe=Shift_JIS&chl=%0D%0Ahttp%3A%2F%2Fhiroshima.whitesnow.jp%2Fqrcode_data_print%2Fhtdocs%2Fphp-recipe%2F04%2Fwork%2Fget.php%3Fid%3D5%26name%3Dhiroshima"
の文字列が確認できました。
しかし、gifとしてなにか保存していますが、画像ではないようです。
度々すいません。

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>ファイルとして保存したい</title> </head> <body> <div> <?php # h()関数☆レシピ221☆(安全にブラウザで値を表示したい)を読み込みます☆レシピ041☆(他のファイルを取り込んで利用したい)。 require_once '../../../../lib/h.php';

ファイル名を設定します。

$fileName = '../../../../data/output/qr_code.gif';
if (! is_dir(dirname($fileName))) {
die('保存するディレクトリが存在しません。');
}

ファイル名を設定します。

$fileName = '../../../../data/output/qr_code.gif';

ファイルが書き込み可能か調べます。

if (is_writable($fileName)) {
echo $fileName . ' は書き込み可能です。<br>';
} else {
echo $fileName . ' は書き込みできないか、存在しません。<br>';
}

QRコードにする文字列を設定します。

$string ="\r\nhttp://hiroshima.whitesnow.jp/qrcode_data_print/htdocs/php-recipe/04/work/get.php?id=5&name=hiroshima";
$encString = rawurlencode($string);

QRコードの要素をセットします。

$parts = array(
'cht' => 'qr', // QRコード
'chs' => '150x150', // サイズ
'choe' => 'Shift_JIS', // 出力エンコード
'chl' => $encString, // QRコードにする文字列
);

QRコードのURIを生成します。

$qrcode = assembledUri($parts);

QRコードを出力します。

echo '<img src="' . $qrcode . '" alt="QRコード" />';

//$qrcode = file_get_contents($qrcode);
//header('Content-type: image/gif');

グラフのURIを組み立てるユーザー定義関数を定義します。

function assembledUri($parts) {
$uri = 'http://chart.apis.google.com/chart?';
$query = '';
foreach ($parts as $key => $val) {
if ($query != '') {
$query .= '&';
}
$query .= "$key=$val";
}
$uri .= $query;
return $uri;
}

/*# 画像をファイルに保存します。

成功した場合、imagepng()関数はtrueを返します。

if (imagepng($qrcode, $fileName)) {

☆レシピ131☆(ディレクトリ内の画像を一覧表示したい)の「display.php」を使って画像を表示させます。

$url = '../02/display.php?file=' . rawurlencode(basename($fileName))
. '&dir=output';
echo '<a href="' . h($url) . '">保存した画像ファイルを表示する</a>';
}else{
echo '失敗';

}*/

var_dump($qrcode);

// 結果をファイルに書き出します
file_put_contents($fileName, $qrcode);

画像を破棄しメモリを解放します。

imagedestroy($qrcode);
?>

</div> </body> </html>

投稿2016/10/16 12:18

hiroshima

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

file_put_contents の実行直前に var_dump 等で $img の内容が正しく出力されることは確認しましたか?

投稿2016/10/14 12:52

chitoku

総合スコア1610

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiroshima

2016/10/15 02:38

var_dump($qrcode);を使って string(218) "http://chart.apis.google.com/chart?cht=qr&chs=150x150&choe=Shift_JIS&chl=%0D%0Ahttp%3A%2F%2Fhiroshima.whitesnow.jp%2Fqrcode_data_print%2Fhtdocs%2Fphp-recipe%2F04%2Fwork%2Fget.php%3Fid%3D5%26name%3Dhiroshima" の文字列が確認できました。 しかし、gifとしてなにか保存していますが、画像ではないようです。 度々すいません。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>ファイルとして保存したい</title> </head> <body> <div> <?php # h()関数☆レシピ221☆(安全にブラウザで値を表示したい)を読み込みます☆レシピ041☆(他のファイルを取り込んで利用したい)。 require_once '../../../../lib/h.php'; # ファイル名を設定します。 $fileName = '../../../../data/output/qr_code.gif'; if (! is_dir(dirname($fileName))) { die('保存するディレクトリが存在しません。'); } # ファイル名を設定します。 $fileName = '../../../../data/output/qr_code.gif'; # ファイルが書き込み可能か調べます。 if (is_writable($fileName)) { echo $fileName . ' は書き込み可能です。<br>'; } else { echo $fileName . ' は書き込みできないか、存在しません。<br>'; } # QRコードにする文字列を設定します。 $string ="\r\nhttp://hiroshima.whitesnow.jp/qrcode_data_print/htdocs/php-recipe/04/work/get.php?id=5&name=hiroshima"; $encString = rawurlencode($string); # QRコードの要素をセットします。 $parts = array( 'cht' => 'qr', // QRコード 'chs' => '150x150', // サイズ 'choe' => 'Shift_JIS', // 出力エンコード 'chl' => $encString, // QRコードにする文字列 ); # QRコードのURIを生成します。 $qrcode = assembledUri($parts); # QRコードを出力します。 echo '<img src="' . $qrcode . '" alt="QRコード" />'; //$qrcode = file_get_contents($qrcode); //header('Content-type: image/gif'); # グラフのURIを組み立てるユーザー定義関数を定義します。 function assembledUri($parts) { $uri = 'http://chart.apis.google.com/chart?'; $query = ''; foreach ($parts as $key => $val) { if ($query != '') { $query .= '&amp;'; } $query .= "$key=$val"; } $uri .= $query; return $uri; } /*# 画像をファイルに保存します。 # 成功した場合、imagepng()関数はtrueを返します。 if (imagepng($qrcode, $fileName)) { # ☆レシピ131☆(ディレクトリ内の画像を一覧表示したい)の「display.php」を使って画像を表示させます。 $url = '../02/display.php?file=' . rawurlencode(basename($fileName)) . '&dir=output'; echo '<a href="' . h($url) . '">保存した画像ファイルを表示する</a>'; }else{ echo '失敗'; }*/ var_dump($qrcode); // 結果をファイルに書き出します file_put_contents($fileName, $qrcode); # 画像を破棄しメモリを解放します。 imagedestroy($qrcode); ?> </div> </body> </html>
chitoku

2016/10/16 14:26

file_get_contents はコメントアウトしない(// をつけない)で実行されているか確認してもらえますか? 現状のコードを見ると URL しか入っていません。
guest

0

保存先のフォルダのパーミッションを確認してください。Web サーバーなどがそのフォルダの所有者と異なるユーザーで PHP を実行している場合は適切な書き込み権限が与えられている必要があります。

PHP からは is_writable 関数にファイル名を渡すことで書き込みが可能かを調べることができます。

正しく設定されていなければコマンドラインなどから当該フォルダに 0777 を設定します。

投稿2016/10/14 06:08

chitoku

総合スコア1610

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiroshima

2016/10/14 11:37

ありがとうございます。 初回はプログラムを動かすと「書き込みできないか、存在しません。」のエラーがでますが、空の「qr_code.gif」を作成します。2回目は、動かすと「書き込み可能です。」でエラーはでませんが、結局、qr画像は作成できません。プログラム上の問題だと思うんですが・・・。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>ファイルとして保存したい</title> </head> <body> <div> <?php # h()関数☆レシピ221☆(安全にブラウザで値を表示したい)を読み込みます☆レシピ041☆(他のファイルを取り込んで利用したい)。 require_once '../../../../lib/h.php'; # ファイル名を設定します。 $fileName = '../../../../data/output/qr_code.gif'; if (! is_dir(dirname($fileName))) { die('保存するディレクトリが存在しません。'); } # ファイル名を設定します。 $fileName = '../../../../data/output/qr_code.gif'; # ファイルが書き込み可能か調べます。 if (is_writable($fileName)) { echo $fileName . ' は書き込み可能です。<br>'; } else { echo $fileName . ' は書き込みできないか、存在しません。<br>'; } # QRコードにする文字列を設定します。 $string ="\r\nhttp://hiroshima.whitesnow.jp/qrcode_data_print/htdocs/php-recipe/04/work/get.php?id=5&name=hiroshima"; $encString = rawurlencode($string); # QRコードの要素をセットします。 $parts = array( 'cht' => 'qr', // QRコード 'chs' => '150x150', // サイズ 'choe' => 'Shift_JIS', // 出力エンコード 'chl' => $encString, // QRコードにする文字列 ); # QRコードのURIを生成します。 $qrcode = assembledUri($parts); # QRコードを出力します。 echo '<img src="' . $qrcode . '" alt="QRコード" />'; ///$img = file_get_contents($qrcode); //header('Content-type: image/gif'); # グラフのURIを組み立てるユーザー定義関数を定義します。 function assembledUri($parts) { $uri = 'http://chart.apis.google.com/chart?'; $query = ''; foreach ($parts as $key => $val) { if ($query != '') { $query .= '&amp;'; } $query .= "$key=$val"; } $uri .= $query; return $uri; } $image = $img; /*# 画像をファイルに保存します。 # 成功した場合、imagepng()関数はtrueを返します。 if (imagepng($image, $fileName)) { # ☆レシピ131☆(ディレクトリ内の画像を一覧表示したい)の「display.php」を使って画像を表示させます。 $url = '../02/display.php?file=' . rawurlencode(basename($fileName)) . '&dir=output'; echo '<a href="' . h($url) . '">保存した画像ファイルを表示する</a>'; }else{ echo '失敗'; } # 画像を破棄しメモリを解放します。 imagedestroy($image);*/ // 結果をファイルに書き出します file_put_contents($fileName, $img); # 画像を破棄しメモリを解放します。 imagedestroy($img); ?> </div> </body> </html>
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問