🐍
[小ネタ] ファイルをdata URLの形式でクリップボードに保存するPythonスクリプト
Markdown でメモを取る際に、画像をメモに貼りたい場合には皆さんどのようにしていますか?
画像を別途保管して、それを下記の例のように参照しても良いのですが、このやり方だとメモの可搬性が低くなります[1]。
example
![note](path/to/some/image.png)
この場合、画像を data URL の形式にして貼ってしまえば、Markdown ファイルで完結する[2]ので可搬性の高い形でメモをとれます。
example of data URL
![note](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==)
example to use data URL with IMG tag
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==">
この data URL の文字列を簡単に生成するスクリプトをご紹介します。
スクリプトの内容
GitHub を参照してください:
簡単に言うと以下の処理をします:
- 引数から取得したファイルを開き、それを
base64
ライブリを使って Base64 形式の文字列を取得します。
この際、base64.b64encode()
の出力はbytes
型なので、decode()
で文字列に変換する必要があります。 -
mimetype
ライブラリを使ってファイル名から、MIME Type を推定します。 - 上記の2つを合わせて data URL の文字列を作り、それを
pyperclip
ライブラリを使ってクリップボードにコピーします。
上記の例では、Windows 上で python スクリプトをコンソールなしで起動するために拡張子を pyw
にしています。
スクリプトの使い方
依存パッケージのインストール
pyperclip
に依存していますので、お使いのシステムに入っていない場合はパッケージをインストールしてください:
pip install pyperclip
コマンドの使い方
スクリプトは引数をひとつ取ります。以下のコマンドを実施すると、
copyDataUrlToClipboard.pwy $FILENAME
$FILENAME
の中身を data URL の形式にしたものがクリップボードに保管されます。
Windows における便利な使い方
- Windows の場合
shell:sendto
にこのスクリプトのショートカットを登録します。 - Explorer などで、変換したいファイルを右クリックし、出てきたメニューの「送る」からこのスクリプトに送ると、data URL の文字列がクリップボードに保管されます。
- お使いのエディタに貼り付けて利用します。
Discussion