[C#]QRコードを使ってプログラム等の受け渡しをする方法[VS2022]

C#

今回はほぼネタ回なんですが。
ネットもUSBも使えなくなったPCから、他のPCにデータを移さなければならないとしたらどうしますか?
その答えのひとつとして、以下の方法を考えました。

方法:QRコードでプログラムを渡す。

手順:

  1. QRコードは容量が少ないので、送りたいファイルをrarで圧縮する。
  2. ish(!)でバイナリーを文字化する。(懐かしいなおい!)
  3. QRコード化する。1枚じゃ収まらないので、必要分作る。(大変だよ!)
  4. スマホとかで読み取る。枚数分頑張って読み込んでテキストを合体させる。(大変だよその2!)
  5. テキストをネットが使えるPCに送って、ish→rarで元に戻す!(ムチャするね!!)
ツッコミ仙人
ツッコミ仙人

今回はそんなネタ回じゃよ。ちなみに実験は成功しとるぞ

rarを使う

WinRARで良いでしょう。購入しろって表示されるけど何年も使えるし。(一応購入した)
容量大きくなるけどzipでも問題無い。ish使うなら雰囲気出してLZHでも良いけどw

ishを使う

パソコン通信時代によくお世話になったよ!HOST PROはバイナリー扱えなかったし!
で、ishて…まだ配布されてるん?64bit Windowsで動くん?と思って調べたらいくつかあったよ!
ish for Linux/Windows 2.01b1で良いと思う。GUIじゃないけど。

ダウンロードして解凍後、いっぱいファイル有るけど、使うのは「ish.exe」だけ。(コンパイルしたい人は、一旦「*.o」を削除し、makefileをMinGW用の該当箇所を修正してMinGWのmingw32-make.exe実行)
コマンドプロンプト(Winキー+Rで、名前のとこにcmdと打ってOKボタン)で、
ish.exeの置いてあるフォルダに移動(例 cd c:\work)し、
・エンコードするなら ish hoge.rar -ss -m -n
・デコードするなら  ish hoge.ish -r -m
みたいに使う。(ちなみに、デコードする際、ishファイルの1行目に書かれている、エンコードした時のフォルダにデコードされるので注意。”-f=”付けてもうまくいかないのはなぜ) 
※「ish -h」 でヘルプ表示

QRコード作成サンプルコード

QRコード作成はVS2022で。
QRコード作成に「ZXing」を使うので、「ツール>NuGetパッケージマネージャー>ソリューションのNuGetパッケージの管理」で、「参照」タブを選択、検索窓に「ZXing」と打って選択し、右側のプロジェクトにチェック☑入れてインストールボタン押す。

using ZXing;
using System.Drawing.Imaging;

//■QRコードを作成し、PNGでセーブ
//引数:
// string strData QRコード化したい文字データ(QRの容量的に、ishの24行分ずつがよい)
// string pngPath PNG出力ファイルのフルパス
void makeQR(string strData, string pngPath)
{
    BarcodeWriter writer = new BarcodeWriter();
    writer.Format = BarcodeFormat.QR_CODE;
    writer.Options.Height = 600;
    writer.Options.Width = 600;
    writer.Options.Margin = 2;

    //ish設定をshift_jisにしてるので、ここもshift_jis。
    //ちなみにishファイルの改行は「\r\n」(CR+LF)
    writer.Options.Hints.Add(EncodeHintType.CHARACTER_SET, "shift_jis");
    writer.Options.Hints.Add(EncodeHintType.ERROR_CORRECTION, 
                 ZXing.QrCode.Internal.ErrorCorrectionLevel.M);

    //QRコード生成しPNGでセーブ
    using (var bmp = writer.Write(strData))
    {
        bmp.Save(pngPath, ImageFormat.Png);
    }
}

下のダウンロードサンプルでは、rarファイルを指定して実行すると、ish変換や、連番png出力までやってくれます。

ダウンロード

QRコードからの復元

ここから手作業になりますwww(ツール作る気力が)

※2024/9/6追記
AndroidスマホとGoogleドキュメントでもっと簡単にできました。(Pixel8aで確認)
AndroidスマホのGoogleレンズでQRコードを読み、読み取ったテキストをGoogleドキュメントに貼り付けます。(QRコードが複数ある場合は、最終行にどんどんテキストを追加していく)
最終的にWindowsPCでGoogleドキュメントを開き、内容をコピー。ローカルに作ったテキストファイル(例えばhoge.txt)にペーストして、そのファイルに対して「ish hoge.txt -a -m」でOK

僕が再現した方法:
QRコードをiPhoneのカメラにかざす。右下に四角で囲まれた三本線が表示されるのでタップ。
すると、デコードされたテキストが表示されるので、「コピー」。

TextForceという、DropBoxにセーブしてくれるテキストエディタアプリがあるので、+ボタンでファイルを新規作成し、最終行に貼り付ける。カメラ読み込みとコピペを、QR画像の数だけ行う。
PCでDropBoxからファイルを取得する。秀丸エディタで開く。

秀丸エディタのメニューの「ファイル」>「エンコードの種類」で、「日本語(Shift-JIS)」を選ぶ。

ダイアログが表示されるので、「内容を維持したまま適用」を選ぶ。
保存するため「Ctrl+S」を押すと、またダイアログが表示される。

「保存せずに変換出来ない文字へジャンプする」でOKを押すと、問題のある箇所に色が付く。
(付かない場合は、上記で「カラーマーカーで色付け」にチェックが入っているか確認。

色が付いてる物は毎回2種類。それぞれ全置換で解決できる。
・‾ → ~
・¥ → \
「¥」は何が違うのか良くわからないけど(¥がバックスラッシュ表示だと、確かに前者は¥のままになってる)、全置換するとマーカーが消えてくれる。

んで、コマンドプロンプトで「ish hoge.ish -r -m」すると、エンコードされたときのフォルダにrarファイルが出現する。これをWinRARで解凍すれば元のファイルができあがり。

Androidスマホと

QRコード、1.2MB入るようになればフロッピーの代わりになるのにw


コメント

タイトルとURLをコピーしました