2013/07/28(日) [n年前の日記]
#1 [prog] 高橋メソッドを画像として保存するPythonスクリプトを書いた
今頃高橋メソッドかよと言われそうな気もするけど。とりあえず、Python + PIL で書いてみた。
出力画像をアニメgifにしてみたり。
一応置いとくです。
_takahashi_method.py.txt (DL後、拡張子を.pyに変更のこと)
_mes.txt (表示テキストを記述したファイル。SJISで記述)
コマンドラインオプションはこんな感じ。
中身はこんな感じ。
takahashi_method.py
mes.txt。SJISで記述。区切りは「----」。
フォントサイズをスクリプト内で変えて、自動で画面一杯に文字を描けないかと思ったけれど。フォントサイズがパカパカ変わるのは見ていて何か妙な感じがするのでは、と思えてきたので、一定のフォントサイズで書くことに。ただ、処理自体は書けそうな気もする。
出力画像をアニメgifにしてみたり。
一応置いとくです。
_takahashi_method.py.txt (DL後、拡張子を.pyに変更のこと)
_mes.txt (表示テキストを記述したファイル。SJISで記述)
コマンドラインオプションはこんな感じ。
>takahashi_method.py --help
Usage: takahashi_method.py [option]
Options:
--version show program's version number and exit
-h, --help show this help message and exit
--font=FILE use TTF filename [default: HGRSGU.TTC]
--fontsize=INT font size [default: 160]
--width=INT image width [default: 1280]
--height=INT image height [default: 720]
-i FILE, --input=FILE
input text file [default: mes.txt]
--debug debug
takahashi_method.py -i mes.txt takahashi_method.py -i mes.txt --width 640 --height 360 --fontsize 72
中身はこんな感じ。
takahashi_method.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# -*- mode: python;Encoding: utf8n -*-
u'''高橋メソッドで画像保存するPythonスクリプト.
usage : takahashi_method.py -i textfile
takahashi_method.py --help
テキストは sjis で記述のこと。
Windows7 x64 + Python 2.6.6 + PIL 1.1.7 で動作確認した。
標準では HGRSGU.TTC (HGP創英角ゴシックUB) を使用。
HGRHM9.TTC (HGP平成明朝体W9) を使うのもいいかもしれない。
フォント指定は絶対パスで指定するべきだが、
Windows上では、警告が出るものの、
フォントファイル名を指定するだけでも動くように見える。
'''
import os
import codecs
from PIL import Image, ImageDraw, ImageFont
from optparse import OptionParser
def main():
p = OptionParser(usage="usage: %prog [option]", version="%prog 0.01")
p.add_option("--font", help="use TTF filename [default: %default]", metavar="FILE", default='HGRSGU.TTC')
p.add_option("--fontsize", help="font size [default: %default]", metavar="INT", default=160)
p.add_option("--width", help="image width [default: %default]", metavar="INT", default=1280)
p.add_option("--height", help="image height [default: %default]", metavar="INT", default=720)
p.add_option("-i", "--input", help="input text file [default: %default]", metavar="FILE", default="mes.txt")
p.add_option( "--debug", help="debug", action="store_true")
(opts, args) = p.parse_args()
sw, sh = int(opts.width), int(opts.height)
fnt = ImageFont.truetype(opts.font, int(opts.fontsize), encoding='shift_jis')
all_lines = codecs.open(opts.input, 'r', 'shift_jis').read()
count = 0
for page in all_lines.split("----"):
lines = page.strip().splitlines()
im = Image.new('RGB', (sw, sh), 'white')
draw = ImageDraw.Draw(im)
w, h = draw.textsize(lines[0], fnt)
spacing = h / 4
fsize_h = h + spacing
y = (sh - (fsize_h * len(lines) - spacing)) / 2
for s in lines:
w, h = draw.textsize(s, fnt)
draw.text(((sw - w) / 2, y), s, font = fnt, fill='black')
y += fsize_h
if opts.debug:
im.show()
else:
im.save("%04d.png" % count, 'PNG')
count += 1
if __name__ == '__main__':
main()
mes.txt。SJISで記述。区切りは「----」。
高橋メソッドを 画像保存 ---- 今頃かよと 言われそう ---- でも 気にしない ---- Python+PILで 実装 ---- テキストは SJISで書く ---- 「-」を4つ書くと ページ区切り ---- オプション 指定可能 --help とか ---- 文字が画像から はみだしちゃう時も あるけれど ---- --fontsizeで 調整してね
フォントサイズをスクリプト内で変えて、自動で画面一杯に文字を描けないかと思ったけれど。フォントサイズがパカパカ変わるのは見ていて何か妙な感じがするのでは、と思えてきたので、一定のフォントサイズで書くことに。ただ、処理自体は書けそうな気もする。
- ttfを使うための初期設定をする際に、異なるフォントサイズでいくつか用意してリストやハッシュに突っ込んで。
- フォントを描画する前に、.textsize() でフォント描画サイズを取得。
- 画像からはみ出すようなら、小さいフォントを選び直して、画像内にギリギリに収まるフォントサイズを得るまで再試行。
- 一旦別画像にフォント描画。
- 画像サイズに縮小して貼り付け。
◎ 2013/08/02追記。 :
ヘルプメッセージがおかしかったので、そこだけ修正してアップロードし直し。
[ ツッコむ ]
#2 [firefox] Firefox 22 でも動くLoad Tabs Progressivelyがあった
Load Tabs Progressively は、Firefox の拡張。導入すると、一気にタブを開こうとした際に、指定したタブ数だけ、ちょっとずつ開いてくれるので、Firefox が固まったりしない。
Firefox のバージョンが上がって動作しなくなって困っていたのだけど。どなたかが改造版を作ってくれたようで。
_Mozilla Firefox 拡張機能スレッド Part77 - ソフトウェア::unkar の900あたり。
自分、数十単位でタブ開いてバババと閉じて、てな感じでブラウジングしてるので、この拡張が動くかどうかは大きかったり。本当に助かりました…。
Firefox のバージョンが上がって動作しなくなって困っていたのだけど。どなたかが改造版を作ってくれたようで。
_Mozilla Firefox 拡張機能スレッド Part77 - ソフトウェア::unkar の900あたり。
900 : 名無しさん@お腹いっぱい。[sage] : 2013/07/15(月) 19:32:55.57 ID:3XDKFbFY0おお…。めっちゃ助かりました。ありがとうございます。
Load Tabs Progressively-1.6pre をベースに、>>612 氏の修正を適用しました。
check Compatibility なしでも動きます。
http://www1.axfc.net/uploader/so/2965369
自分、数十単位でタブ開いてバババと閉じて、てな感じでブラウジングしてるので、この拡張が動くかどうかは大きかったり。本当に助かりました…。
[ ツッコむ ]
#3 [dtm] 効果音作成で悩んだり
ボタンをクリックした際に音を鳴らしたいと思ったのだけど、どういう音が合ってるのか悩んでしまったり。FL Studio で3つぐらい作って鳴らしたけれど、どれも違う。自分の頭の中では、どういう音が鳴っているんだろう…。
フリーで使える効果音を公開してくれているサイトを眺めて、色々鳴らしてイメージを探したり。どういう音なんだろうなあ…。
それはともかく。それらサイトを眺めていた際、 _SOUNDICONS 経由で、 _Graph Arpeggiator 3 という、効果音作成に特化したツールの存在を知った。 _解説動画 を見る限り、結構便利そう。一般的なDTMソフトを使ってもどうにかやれそうな内容ではあるけれど、頻繁に変更するパラメータを絞って、サクサクとトライ&エラーを繰り返せるようにしているあたりがヨサゲ。楽曲作成用ソフトでは、パラメータ変更に面倒な操作手順を要求されてしまうから、件のツールと比べると作業効率が悪いなと思えてきたり。
フリーで使える効果音を公開してくれているサイトを眺めて、色々鳴らしてイメージを探したり。どういう音なんだろうなあ…。
それはともかく。それらサイトを眺めていた際、 _SOUNDICONS 経由で、 _Graph Arpeggiator 3 という、効果音作成に特化したツールの存在を知った。 _解説動画 を見る限り、結構便利そう。一般的なDTMソフトを使ってもどうにかやれそうな内容ではあるけれど、頻繁に変更するパラメータを絞って、サクサクとトライ&エラーを繰り返せるようにしているあたりがヨサゲ。楽曲作成用ソフトでは、パラメータ変更に面倒な操作手順を要求されてしまうから、件のツールと比べると作業効率が悪いなと思えてきたり。
[ ツッコむ ]
#4 [anime] 真田さんを誤解していたかも
ヤマト2199の、ナントカ航行装置の秘密を明かす回を視聴。
真田さんが「それはできない」と言い張ってた理由が分かって、なるほどと。ヤマトがイスカンダルに行く目的は 一つじゃなかったのだな…。そういう理由なら途中で引き返すことはできないわな…。しかも秘密にしとかないといけない話だし。
それはそれとして。波動砲の仕組みについて嬉しそうに解説してた回を見て以来、真田さんは説明大好き人間かと勝手に思ってたけど。今回の話を見て、逆に何かと説明が足りてない・説明すべき場面でちゃんと説明してくれないキャラかもしれないと思えてきたり。軽く説明しとけば 古代も森も余計な心配せずに済んだのに…。古代兄に対しても、ぼやかしつつ説明しとけば…。
メガネ女子が 古代兄とそういう仲だったという設定もでてきて、これもなるほどと。チラチラと写真?を見てたシーンがあったような気もするけど、そういうことだったのかと。自分、てっきり 真田さんにそういう感情を持っているのかと思ってたけど、そっちじゃなかったんだな…。
何にせよ、ヤマト2199、面白いです。
真田さんが「それはできない」と言い張ってた理由が分かって、なるほどと。ヤマトがイスカンダルに行く目的は 一つじゃなかったのだな…。そういう理由なら途中で引き返すことはできないわな…。しかも秘密にしとかないといけない話だし。
それはそれとして。波動砲の仕組みについて嬉しそうに解説してた回を見て以来、真田さんは説明大好き人間かと勝手に思ってたけど。今回の話を見て、逆に何かと説明が足りてない・説明すべき場面でちゃんと説明してくれないキャラかもしれないと思えてきたり。軽く説明しとけば 古代も森も余計な心配せずに済んだのに…。古代兄に対しても、ぼやかしつつ説明しとけば…。
メガネ女子が 古代兄とそういう仲だったという設定もでてきて、これもなるほどと。チラチラと写真?を見てたシーンがあったような気もするけど、そういうことだったのかと。自分、てっきり 真田さんにそういう感情を持っているのかと思ってたけど、そっちじゃなかったんだな…。
何にせよ、ヤマト2199、面白いです。
[ ツッコむ ]
以上、1 日分です。
