パソコンの画面に表示されたQRコードを読み取るときの
スマホを手に取る
↓
カメラや読み取りアプリを起動
↓
カメラをパソコン画面に向ける
↓
読み取り
↓
テキストを確認する
↓
...
だるいですね!
■ ChatGPT に聞いてみる
以下は、Macで選択範囲をコピーして、その中に含まれるQRコードを読み出し、テキストとQRコードを表示するBashスクリプトです。QRコードの読み出しにはzbarコマンドを使用しています。
#!/bin/bash
# 選択範囲をクリップボードにコピーする
screencapture -i -c -o
# クリップボードにコピーされた画像を一時ファイルに保存する
tmp_file=$(mktemp -t qr_code.XXXXXXXXXX).png
pbpaste -Prefer "public.png" > "$tmp_file"
# zbarを使用してQRコードを読み出す
barcode=$(zbarimg --quiet --raw "$tmp_file")
if [ -n "$barcode" ]; then
# QRコードのテキストを表示する
echo "QR Code Text: $barcode"
# QRコードを作成して表示する
qrencode -o - "$barcode" | display -
else
echo "No QR code found in selection."
fi
# 一時ファイルを削除する
rm "$tmp_file"
このスクリプトでは、qrencodeコマンドを使用して、QRコード画像を作成して表示しています。QRコードが検出されなかった場合には、「No QR code found in selection.」と表示します。
このスクリプトをファイルに保存し、実行可能な権限を与えてください。また、zbarコマンドとqrencodeコマンドがインストールされている必要があります。QRコードを表示するためには、ImageMagickパッケージが必要です。
実行すると、クリップボードに範囲指定で画面キャプチャはできます。
しかし、pbpaste
でクリップボード内画像データから正しく画像ファイルを生成できませんでした。
■ クリップボード内画像データからファイルを生成する
以下の記事を参考に一時ファイルの生成を行います。
osascript <<EOF
set png_data to the clipboard as «class PNGf»
set the_file to open for access POSIX path of (POSIX file "/tmp/image.png") with write permission
write png_data to the_file
close access the_file
EOF
👉 MacOSでクリップボード上の画像を保存するスクリプト - 神和電子
これで、クリップボードにコピーした画像PNGファイルデータから画像ファイルを作成できるようになりました。
■ QRコードの解析してテキスト化する
続いて、QRコード読み込みしてテキスト化ツールをインストールします。
👉 ZBar/ZBar: Clone of the mercurial repository http://zbar.hg.sourceforge.net:8000/hgroot/zbar/zbar
👉 mchehab/zbar: ZBar is an open source software suite for reading bar codes from various sources, including webcams. As its development stopped in 2012, I took the task of keeping it updated with the V4L2 API. This is the main repository for it. There's a clone at at LinuxTV.org, and another one at gitlab.
❯ brew install zbar
❯ zbarimg -h
usage: zbarimg [options] <image>...
scan and decode bar codes from one or more image files
options:
-h, --help display this help text
--version display version information and exit
-q, --quiet minimal output, only print decoded symbol data
-v, --verbose increase debug output level
--verbose=N set specific debug output level
-d, --display enable display of following images to the screen
-D, --nodisplay disable display of following images (default)
--xml, --noxml enable/disable XML output format
--raw output decoded symbol data without converting charsets
-1, --oneshot exit after scanning one bar code
-S<CONFIG>[=<VALUE>], --set <CONFIG>[=<VALUE>]
set decoder/scanner <CONFIG> to <VALUE> (or 1)
ファイルから読みとるようなので以下のサンプルQRコードファイル hello.png
を読ませて出力を確認しておきます。
❯ zbarimg --quiet hello.png
QR-Code:こんにちは、QRコード!
❯ zbarimg --quiet --raw hello.png
こんにちは、QRコード!
簡単で便利ですね。
■ 修正する
以上を組み合わせて、前述の ChatGPT によるコードを修正しました。
いけました!
Mac では、ショートカット.app から使うと便利です。
Mac メニューバーからショートカットを使ってスクリプトを実行する方法
👉 https://t.co/n3jDr2o2mA #mac #プログラミング pic.twitter.com/0I7Urqwu7i— chanzmao (@maochanz) March 3, 2023
■ まとめ
ChatGPT て少しデータが古い感じはありますが、動かないとしても、最初からググるよりも、明らかに早くコードを作成できます。