指定画像をbase64エンコーディング文字列に変換するAppleScriptです。
用途は、sdef(AppleScript用語辞書)に画像を突っ込む(ためのデータを作る)こと。それだけです。
ただ、あまりにでかい画像をbase64文字化して取得すると、スクリプトエディタが結果を表示したときに不安定になったり処理が返ってこなくなったりするので、文字列を取得する前にデータサイズを計算し、リサイズしてから文字列化するとか、他の形式(GIFなど)を用いてエンコードするなどのケアが必要になります。ねんのため。
元画像が何であっても、NSImageに読み込める画像なら(OSでサポートしている画像なら)読み込んで、PNG形式に変換したのちにBase64エンコード文字列に変換しています。
▲エンコードするにしても数10KBとかそのぐらいのファイルサイズの画像にしておかないと後がつらい
▲4K解像度の画像をbase64エンコードするとこんなに結果が巨大に
AppleScript名:指定画像をbase64エンコード文字列に変換.scptd |
— – Created by: Takaaki Naganoya – Created on: 2019/10/25 — – Copyright © 2019 Piyomaru Software, All Rights Reserved — property NSString : a reference to current application’s NSString property NSImage : a reference to current application’s NSImage property NSPNGFileType : a reference to current application’s NSPNGFileType property NSBitmapImageRep : a reference to current application’s NSBitmapImageRep property NSUTF8StringEncoding : a reference to current application’s NSUTF8StringEncoding property NSDataBase64EncodingEndLineWithLineFeed : a reference to current application’s NSDataBase64EncodingEndLineWithLineFeed use AppleScript version "2.4" — Yosemite (10.10) or later use framework "Foundation" use scripting additions set aFile to choose file of type {"public.image"} set aStr to base64StringFromImageFile(aFile) of me –Base64 Encode on base64StringFromImageFile(aFile) set aPOSIX to POSIX path of aFile set anImage to NSImage’s alloc()’s initWithContentsOfFile:aPOSIX set imageRep to NSBitmapImageRep’s alloc()’s initWithData:(anImage’s TIFFRepresentation()) set aPNGdat to imageRep’s representationUsingType:(NSPNGFileType) |properties|:(missing value) set base64Str to aPNGdat’s base64EncodedDataWithOptions:(NSDataBase64EncodingEndLineWithLineFeed) set bStr to (NSString’s alloc()’s initWithData:base64Str encoding:(NSUTF8StringEncoding)) return bStr as string –or return NSString (delete as string) for speedy processing end base64StringFromImageFile |
More from my site
(Visited 1,007 times, 6 visits today)