|
現: 2024-04-09 (火) 13:25:18 yuji |
| + | * Google Chart APIを使ってQRコードを作成する [#o4d8f377] |
| + | Google ChartsはGoogleがオンラインで提供しているグラフ描画サービスで,JavaScriptが動作するWEBブラウザで手軽にグラフを作成できるサービス。~ |
| + | また,これをWEBサービス化したのがGoogle Chart APIのようだ。~ |
| | | |
| + | Google Chart APIでは,QRコード作成もサポートされている。~ |
| + | 利用するには''インターネットにアクセスできる環境からでないと利用は出来ない''が,使いやすいサービス。~ |
| + | |
| + | 問題としては,Google側のサービスの不具合や,API仕様が突然変更されたり,サービスを突然停止し使用出来なくなってしまう問題がある。~ |
| + | |
| + | Googleから&color(#ff0000){''03/14/2019をもってこのサービスが使えなくなるとアナウンスされていて,実際に3/18/2019から使用できなくなった。3/20/2019になぜか復活した。''};~ |
| + | まあ,復活してもいつまで使えるかはわかりません・・・~ |
| + | |
| + | 代替えサービスとしては,[[Google Chart APIの代わりのサービス>#ec00b711]]が使用出来る。~ |
| + | |
| + | ** Goolge Chart APIって [#vef083bc] |
| + | [[Google Charts>https://developers.google.com/chart/]]は,Googleが提供しているグラフ作成サービス。~ |
| + | Googleは,WEB API(Google Chart API)としてもサービスしてくれていて,URLにパラメータを指定するだけでグラフをPNG画像として取得出来ちゃいます。 このGoogle Chartを使った''WEB APIでは,QRコードもサポートされている。(Google Charts自体にはQRコードはサポートされていない。)'' |
| + | |
| + | 残念ながらGoogle Chart APIでは''MicroQRコードには対応していなかった。'' |
| + | |
| + | 使用例:~ |
| + | http://chart.apis.google.com/chart?cht=qr&chs=100x100&chco=000000&chl=https://yueno.net/ |
| + | |
| + | //実行例:(%%03/14/2019以降は表示されないと思う。%% 03/20/2019に使えるように復活したがいつまで使えるかは不明。下に表示されていなければ動作していません。)~ |
| + | //#iframe(http://chart.apis.google.com/chart?cht=qr&chs=100x100&chco=000000&chl=https://yueno.net/,style=width:100px;height:100px;,iestyle=width:100px;height:100px;) |
| + | |
| + | wgetコマンドで直接QRコード画像が得られる。~ |
| + | > wget -O yueno.png "http://chart.apis.google.com/chart?cht=qr&chs=100x100&chco=000000&chl=https://yueno.net/" |
| + | |
| + | *** Google Chart APIでのQRコード用パラメータ [#q65c7410] |
| + | 使い方は,以下のような形式で指定する。~ |
| + | http://chart.apis.google.com/chart?cht=qr&chs=<QRコードのサイズ>&chco=<色>&choe=<QRコード画像の出力エンコード>&chl=<QRコードにしたい文字列> |
| + | |
| + | |パラメータ |必須 or オプション|説明|h |
| + | |cht=qr |必須 |QRコードを指定| |
| + | |chs=<幅>x<高さ> |必須 |イメージサイズ| |
| + | |chl=<入力データ> |必須 |エンコードするデータ。 数字(0-9),英文字,バイナリデータ,漢字コード。&br;''データが日本語の場合は,UTF-8文字列でURLエンコードしたデータが必要''。max.2K(POSTで送る)| |
| + | |choe=<出力エンコードタイプ> |オプション |QRコードの出力エンコードタイプの指定。以下が可能:&br;UTF-8(デフォルト)&br;Shift_JIS&br;ISO-8859-1| |
| + | |chld=<エラー訂正レベル> or <マージン> |オプション |エラー訂正レベル:&br;L - 約7%が復元可能(デフォルト)&br;M - 約15%が復元可能&br;Q - 約25%が復元可能&br;H - 約30%が復元可能&br;マージン - QRコードのデータ部分の周囲の白い境界線の幅。行単位(ピクセルサイズではない)&br;(デフォルト):4| |
| + | |chco=<色> |オプション |作成データの色。RGBの並びで各色ごとに8bit16進数で指定。&br;(デフォルト):000000| |
| + | |
| + | ** Microsoft EXCELで使ってみる [#qa7bbf54] |
| + | 以下の''VBAマクロ''をEXCELの標準モジュールに追加する。~ |
| + | #code(vb,nonumber){{ |
| + | ' |
| + | ' QRimg(QRコード化する文字列 as string) |
| + | ' |
| + | ' by Yuji ueno |
| + | ' |
| + | Public Function QRimg(ByVal str As String) As String |
| + | Dim TopPosition As Double |
| + | Dim LeftPosition As Double |
| + | Dim wkSheet As Worksheet |
| + | Dim xRange As Range |
| + | Dim xAddr As String |
| + | Dim QRShape As Shape |
| + | |
| + | ' 文字列がなかったらエラーで終了 |
| + | If Len(str) = 0 Then |
| + | QRimg = "False" |
| + | Exit Function |
| + | End If |
| + | |
| + | If TypeName(Application.Caller) <> "Range" Then |
| + | QRimg = "False" |
| + | Exit Function |
| + | End If |
| + | |
| + | ' 呼ばれたワークシートを取得 |
| + | Set wkSheet = Application.Caller.Worksheet |
| + | Set xRange = Application.Caller |
| + | xAddr = xRange.Address |
| + | |
| + | ' 前にセルに貼られていた画像を削除 |
| + | Range(xAddr).Select |
| + | For Each selectRange In Selection |
| + | For Each myShape In wkSheet.Shapes |
| + | Set myRange = Range(myShape.TopLeftCell, myShape.BottomRightCell) |
| + | If Intersect(myRange, Range(xAddr)) Is Nothing = False Then |
| + | myShape.Delete |
| + | End If |
| + | Next |
| + | Next |
| + | |
| + | ' 画像の位置 |
| + | TopPosition = xRange.Top |
| + | LeftPosition = xRange.Left |
| + | |
| + | ' QRコードを作成するリクエストを作成(Google Chart APIを使用する) |
| + | url = "http://chart.apis.google.com/chart?cht=qr&chs=80x80&chco=000000&chl=" & str & "" |
| + | 'url = "https://bwipjs-api.metafloor.com/?bcid=qrcode&&size=100&text=" & str & "" |
| + | |
| + | If Not url = "" Then |
| + | ' QRコードのイメージを表示 |
| + | Set QRShape = wkSheet.Shapes.AddPicture(url, LinkToFile:=False, SaveWithDocument:=True, Left:=LeftPosition, Top:=TopPosition, Width:=80, Height:=80) |
| + | End If |
| + | |
| + | QRimg = "" |
| + | |
| + | End Function |
| + | }} |
| + | |
| + | ワークシートの''B1''に「=QRimg(A1)」と入れて,''A1''にQRコードに埋め込むデータを入れると,''B1''にQRコード画像が挿入される。~ |
| + | #ref(excel.png,,70%) |
| + | |
| + | * Google Chart APIの代わりのサービス [#ec00b711] |
| + | 使えなくなったGoogle Chart APIの代わりになるようなサービス。~ |
| + | |
| + | ** Online Barcode API [#n7f3a8cb] |
| + | [[Online Bardode API>https://github.com/metafloor/bwip-js/wiki/Online-Barcode-API]]というサービスがあります。~ |
| + | QRコードだけでなく一般的なほとんどのバーコードを作成することが出来る。ただ,通常の棒グラフとか円グラフといったグラフはサポートされていない。~ |
| + | MicroQRコードにも対応している。~ |
| + | |
| + | WEB APIはオープンソース・ソフトウェアなので,自前のサーバーでも動かすことも可能。~ |
| + | |
| + | 使用例: |
| + | https://bwipjs-api.metafloor.com/?bcid=qrcode&text=https://yueno.net |
| + | https://bwipjs-api.metafloor.com/?bcid=microqrcode&version=M4&text=yueno.net |
| + | //上記の実行例: |
| + | //#iframe(https://bwipjs-api.metafloor.com/?bcid=qrcode&text=https://yueno.net,style=width:100px;height:100px;,iestyle=width:100px;height:100px;) |
| + | |
| + | curlを使って,直接QRコード画像が得られます。 |
| + | > curl -o yueno.png "https://bwipjs-api.metafloor.com/?bcid=qrcode&text=https://yueno.net" |
| + | |
| + | ** QuickChart [#x585056c] |
| + | Google Cart APIのようなサービスとして[[QuickChart>http://quickchart.io]]がある。~ |
| + | QRコード以外は,[[Chart.js>https://www.chartjs.org/]]を使用していると思われる。~ |
| + | MicroQRコードには対応していない。~ |
| + | |
| + | WEB APIとしていつまでサービスしてくれるかは不明だが,オープンソース・ソフトウェアなので,自前のサーバーでも動かすことも可能。~ |
| + | |
| + | 使用例: |
| + | https://quickchart.io/qr?size=100&text=https://yueno.net |
| + | |
| + | //上記の実行例: |
| + | //#iframe(https://quickchart.io/qr?size=100&text=http://www.nalux.co.jp,style=width:100px;height:100px;,iestyle=width:100px;height:100px;) |
| + | |
| + | curlを使って,直接QRコード画像が得られます。 |
| + | > curl -o yueno.png "https://quickchart.io/qr?size=100&text=https://yueno.net" |
| + | |
| + | ** QR code API [#x10250d8] |
| + | [[QR code API>http://goqr.me/api/]]という,QRコードを作成するWEB APIがあります。~ |
| + | 残念ながらMicroQRコードには対応していないようだ。~ |
| + | |
| + | APIに関するドキュメントは,[[こちらのページ>http://goqr.me/api/doc/]]に書かれている。~ |
| + | |
| + | 使い方は簡単です。 |
| + | https://api.qrserver.com/v1/create-qr-code/?data=https://yueno.net&size=100x100 |
| + | とすればOK。 |
| + | |
| + | //上記の実行してみると, |
| + | //#iframe(https://api.qrserver.com/v1/create-qr-code/?data=https://yueno.net&size=100x100,style=width:100px;height:100px;,iestyle=width:100px;height:100px;) |
| + | //のようにQRコードが取得できます。 |
| + | // |
| + | curlを使って,直接QRコード画像が得られます。 |
| + | > curl -o nalux.png "https://api.qrserver.com/v1/create-qr-code/?data=https://yueno.net&size=100x100" |