Pythonでキーボード入力した文字列を横にスライドさせて表示し、それを動画にするプログラム

Pythonでキーボード入力した文字列を横にスライドさせて表示し、それをMP4形式の動画にするプログラムの紹介をします。

文字列を横にスライドさせる方法はこちらPythonで画像を横にスライドさせる表示の仕方とそれを動画にする方法の投稿で紹介した「文字列画像をスライドさせるプログラム」と同じものを使っているので、この投稿ではキーボード入力した文字列を画像にするプログラムをメインに説明します。

また、入力した文字列を画像にすると文字列以外の余白ができるので、その余白なしの場合ありの場合、両方のプログラムを交えて紹介します。

目次

【余白なし】
・キーボード入力した文字列を横にスライドさせて表示している様子

・キーボード入力した文字列を画像にするプログラム + 横にスライドさせる表示とそれを動画にするプログラム

・MP4形式の動画で保存した様子

【余白あり】
・キーボード入力した文字列を横にスライドさせて表示している様子

・キーボード入力した文字列を画像にするプログラム + 横にスライドさせる表示とそれを動画にするプログラム

・MP4形式の動画で保存した様子

・参考サイト







余白なし

キーボード入力した文字列を横にスライドさせて表示している様子

文字列以外の余白を切り取っています。

キーボード入力した文字列を画像にするプログラム + 横にスライドさせる表示とそれを動画にするプログラム

プログラムの説明をします。

7行目はキーボード入力を可能にして、入力された文字列を変数mojiに代入しています。

11行目は文字列を描画する範囲を決めています。この描画する範囲の横幅を決めるときに、8行目で調べた文字列の個数を使います。

14行目は文字列を描画する位置とサイズを決めて、11行目で指定した範囲内に文字列を描画しています。
(0.0, 0.5, moji, size=50)の0.0の部分はx軸(横)、0.5の部分はy軸(縦)を指定しています。また、x軸とy軸はともに0.0~1.0までの範囲になります。
ここのx軸とy軸の範囲は下で説明している(余白あり)の方が、目で見てわかりやすいです。

17行目は文字列を描画した様子を画像にして保存しています。

plt.savefigについてはこちらplt.showで表示する画像をプログラム上で保存する方法の投稿で紹介しています。

20行目は19行目で読み込んだ画像の高さと幅の値変数height, widthに代入しています。

21、22行目は余白を切り取るときに使う、数値を決めています。余白は右側の方が広くなるので、左側より少し大きめに設定しています。

23行目は読み込んだ文字列画像余白を切り取っています
15+left:width-(20+right)1520は、21、22行目で設定した切り取る値とプラスして、余白を切り取ります。この右側の数値20も22行目と同様に、左側より少し大きめに設定しています。

28行目から下はPythonで画像を横にスライドさせる表示の仕方とそれを動画にする方法と同じプログラムなので、そちらの投稿を拝見してください。

17行目のplt.savefig(“mp_text.png”)で保存した画像

余白を切り取る前の画像になります。19~23行目で余白を切り取っています。

MP4形式の動画で保存した様子

Pythonプログラムで保存したMP4形式の動画になります。



余白あり

キーボード入力した文字列を横にスライドさせて表示している様子

文字列以外の余白を切り取らない場合

余白があることを強調するために、背景を黒色にしています。

キーボード入力した文字列を画像にするプログラム + 横にスライドさせる表示とそれを動画にするプログラム

(余白なし)プログラムから変更、追加した箇所だけ説明します。

plt.axis(“off”)を削減して、マス目と枠線を表示しています

余白を切り取らないので、余白を切り取るプログラムを削減しています。

追加した箇所は18行目に読み込んだ画像を小さくするプログラムを追加しています。

余白がある場合は画像のサイズが大きいので、小さくしています。

余白なしのプログラムでは、下画像の赤矢印の部分を削って、緑の枠線で囲んだ部分だけ切り取っています。

15行目のplt.savefig(“mp_text.png”)で保存した画像

余白を切り取らずに、この画像のままサイズを小さくして横にスライドさせています。

MP4形式の動画で保存した様子

Pythonプログラムで保存したMP4形式の動画になります。

参考サイト

matplotlibに日本語入力ができるようにする方法について
https://yolo.love/matplotlib/japanese/