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

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

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

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

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

4回答

2052閲覧

PHP、JS,でQRコードを生成し保存

popopop

総合スコア11

PHP

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

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/02/28 05:00

PHPまたはJSでQRコードを生成し画像ファイルとして保存はできますか?

QRコードを生成して表示はできるのですが保存する方法がわかりません

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

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

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

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

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

guest

回答4

0

Webエンジニアとしての観点で
「こうした方が良いんじゃないかな?」と思う内容を記述しておきます。


そもそもQRコードは「お好きな文字」を2次元バーコードにして保管する手法でしかありません。
そのアルゴリズムも広く公開されており、jQueryに固執せずともどんな言語でも生成できます。

参考記事: 5分で出来る!PHPでQRコードを生成する方法 - あぱーブログ

というのも画像はファイルサイズが大幅に大きくなるものですので、
30文字程度の日本語なら大体90バイトに収まります。
英数字で30文字なら30バイトです。

しかし画像になると、小指の指先しかないような小さい画像でも
一瞬で数百キロバイトに化けます。
これがチリも積もれば……でユーザーが沢山訪れて1000件保存すれば数百メガバイトになるでしょう。


他の観点からもオススメ出来ません。
QRコードは文字列→二次元バーコードへの変換は楽に行なえますが、
二次元バーコード画像から文字列を取り出す事はかなり大変です。

それにより、悪意の第三者がやってきて
反社会的なメッセージや児童ポルノの情報等を大量にWebサーバに保存するなんてことも考えられます。
こういったメッセージを残しておくと犯罪者として取り締まられてしまう可能性がありますので、
Webサーバとして全世界に公開するであればそういった対策も必要となるでしょう。


という訳で対応策としてはシンプルになります。

上記の参考記事のようなPHP等のサーバーサイドでQRコードを生成出来るような仕組みを用意しておき、
PHPのWebサーバには普通の文字列を送り込み、
その文字列などをデータベースなんかに突っ込んで、
訪れたユーザーがデータをQRコードでくれと要望してきたタイミングで作って渡す方が健全です。

まぁ、jQueryで出来るのであればPHPは保存された普通の文字列を返して、
ユーザーはjQuery越しにQRコードを生成して勝手に使えば良いという役割分担をしても良いでしょう。
管理者が使いたいのであれば、管理画面をChrome等のブラウザで開いてjQueryで生成した二次元バーコードを閲覧するという仕組みにしても良いと思います。

投稿2020/02/28 07:37

miyabi-sun

総合スコア21400

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

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

0

ベストアンサー

jquery.qrcode.jsで生成したQRコードを画像としてサーバー側に保存したいです

というのは結構大変です。
アプローチとしては、node.js等のサーバサイドJSが動く環境を作って、そこでjQueryを動かすという形になります。
NodeJSでjQueryを使う

一方で、PHPでQRコードを生成するのは数多く方法が存在するので
PHP QRコード 生成あたりで検索して

【PHP】endroid/qr-codeを使ってQRコードを生成してみる
の様な形で生成して、
echo $qrCode->writeString();
する代わりに戻り値をファイルとして保存してあげれば行けそうな気がします。

投稿2020/02/28 05:19

tanat

総合スコア18778

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

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

0

QRコードを生成して表示はできるのですが保存する方法がわかりません

どこでどのように生成したのかはわかりませんが、ブラウザ経由でユーザーのPCに保存するなら、ダウンロードさせればよいです。

投稿2020/02/28 05:07

kei344

総合スコア69625

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

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

popopop

2020/02/28 05:09

jquery.qrcode.jsで生成したQRコードを画像としてサーバー側に保存したいです
guest

0

QRコードを生成して表示はできるのです

それができるならimgタグにapiを埋め込んで画像を表示してください

jqueryバージョン

投稿2020/02/28 05:01

編集2020/02/28 06:07
yambejp

総合スコア117682

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

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

yambejp

2020/02/28 05:09

UIとしてはaタグのdownload属性で制御します
popopop

2020/02/28 05:11

jquery.qrcode.jsで生成したQRコードを画像としてサーバー側に保存したいです
yambejp

2020/02/28 05:20

> jquery.qrcode.jsで生成したQRコード そのサンプルを例示ください
yambejp

2020/02/28 06:04 編集

<script> $(function(){ $.when( $('#qrcode').qrcode({width: 64, height: 64, text: "information"}) ).done(function(){ var type = 'image/jpeg'; var dataurl = $('#qrcode canvas').get(0).toDataURL(type); var bin = atob(dataurl.split(',')[1]); var buffer = new Uint8Array(bin.length); for (var i = 0; i < bin.length; i++) { buffer[i] = bin.charCodeAt(i); } var blob = new Blob([buffer.buffer], {type: type}); var url = URL.createObjectURL(blob); var href = URL.createObjectURL(blob); var download="test.jpg"; $('#qrcode canvas').wrap($('<a>').attr({href,download})); }); }); </script> <div id="qrcode"></div>
yambejp

2020/02/28 07:41 編集

回答に追記したcodepenを参考にしてください 流れ:canvas作成→blob作成→blobをurlリンク化→ canvasをaでラップして、download属性をつける 結果canvasをクリックするとダウンロードされる
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問