指定のデータをASCII ARTで表現されたQRコードのテキストに変換するAppleScriptです。もともと、QR Code画像の作成は普通にできているので、あえてASCII ARTで作成する必要はないのですが、思いつきで作って(作らせて)みました。
この手の「作ってみるほどの価値はないが、冗談半分で作ってみる」のに人間のパワーを割くのは得策ではありません。ChatGPTに作らせてみました(2回ほど動かないコードが出てきましたが)。
作ったあとで他の作例がないか確認してみたところ、Terminal上でQRコードを表示するのに利用している例が見当たりました。

このASCII ART QR CodeのダイアログをiPhone内蔵カメラで認識させてみたところ、問題なく認識できました。
| AppleScript名:ASCII ART QR Encoderscptd.scptd |
| — – Created by: Takaaki Naganoya – Created on: 2025/12/31 — – Copyright © 2025 Piyomaru Software, All Rights Reserved — use AppleScript use framework "Foundation" use framework "CoreImage" use framework "AppKit" use scripting additions set testString to "http://piyocast.com/as/" set asciiQR to makeAsciiQRCode(testString) display dialog asciiQR buttons {"OK"} default button "OK" — ASCII ART QR Encoder on makeAsciiQRCode(theText) — 1. 文字列 → NSData set textData to current application’s NSString’s stringWithString:theText set dataObj to textData’s dataUsingEncoding:(current application’s NSUTF8StringEncoding) — 2. QR生成 set qrFilter to current application’s CIFilter’s filterWithName:"CIQRCodeGenerator" qrFilter’s setDefaults() qrFilter’s setValue:dataObj forKey:"inputMessage" qrFilter’s setValue:"M" forKey:"inputCorrectionLevel" set ciImage to qrFilter’s outputImage() — 3. CIImage → NSBitmapImageRep set bitmapRep to current application’s NSBitmapImageRep’s alloc()’s initWithCIImage:ciImage — サイズ取得 set pixelsWide to bitmapRep’s pixelsWide() set pixelsHigh to bitmapRep’s pixelsHigh() set resultText to "" — 4. ピクセル走査 repeat with y from (pixelsHigh – 1) to 0 by -1 set lineText to "" repeat with x from 0 to (pixelsWide – 1) set pixelColor to (bitmapRep’s colorAtX:x y:y) set grayColor to (pixelColor’s colorUsingColorSpaceName:(current application’s NSCalibratedWhiteColorSpace)) set brightness to grayColor’s whiteComponent() if brightness < 0.5 then set lineText to lineText & "■" else set lineText to lineText & " " — 全角スペース end if end repeat set resultText to resultText & lineText & linefeed end repeat return resultText end makeAsciiQRCode |
(Visited 6 times, 6 visits today)


