mieki256's diary



2013/07/28() [n年前の日記]

#1 [prog] 高橋メソッドを画像として保存するPythonスクリプトを書いた

今頃高橋メソッドかよと言われそうな気もするけど。とりあえず、Python + PIL で書いてみた。

出力画像をアニメ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で
調整してね

フォントサイズをスクリプト内で変えて、自動で画面一杯に文字を描けないかと思ったけれど。フォントサイズがパカパカ変わるのは見ていて何か妙な感じがするのでは、と思えてきたので、一定のフォントサイズで書くことに。ただ、処理自体は書けそうな気もする。 あるいは、以下のようなやり方でも、できるのかも。 ただ、このやり方だと拡大縮小がかかるから、ページ?毎にフォントのぼやけ具合が変わりそうだなと。

2013/08/02追記。 :

ヘルプメッセージがおかしかったので、そこだけ修正してアップロードし直し。

#2 [firefox] Firefox 22 でも動くLoad Tabs Progressivelyがあった

Load Tabs Progressively は、Firefox の拡張。導入すると、一気にタブを開こうとした際に、指定したタブ数だけ、ちょっとずつ開いてくれるので、Firefox が固まったりしない。

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

Mozilla Firefox 拡張機能スレッド Part77 - ソフトウェア::unkar より

おお…。めっちゃ助かりました。ありがとうございます。

自分、数十単位でタブ開いてバババと閉じて、てな感じでブラウジングしてるので、この拡張が動くかどうかは大きかったり。本当に助かりました…。

#3 [dtm] 効果音作成で悩んだり

ボタンをクリックした際に音を鳴らしたいと思ったのだけど、どういう音が合ってるのか悩んでしまったり。FL Studio で3つぐらい作って鳴らしたけれど、どれも違う。自分の頭の中では、どういう音が鳴っているんだろう…。

フリーで使える効果音を公開してくれているサイトを眺めて、色々鳴らしてイメージを探したり。どういう音なんだろうなあ…。

それはともかく。それらサイトを眺めていた際、 _SOUNDICONS 経由で、 _Graph Arpeggiator 3 という、効果音作成に特化したツールの存在を知った。 _解説動画 を見る限り、結構便利そう。一般的なDTMソフトを使ってもどうにかやれそうな内容ではあるけれど、頻繁に変更するパラメータを絞って、サクサクとトライ&エラーを繰り返せるようにしているあたりがヨサゲ。楽曲作成用ソフトでは、パラメータ変更に面倒な操作手順を要求されてしまうから、件のツールと比べると作業効率が悪いなと思えてきたり。

#4 [anime] 真田さんを誤解していたかも

ヤマト2199の、ナントカ航行装置の秘密を明かす回を視聴。
真田さんが「それはできない」と言い張ってた理由が分かって、なるほどと。ヤマトがイスカンダルに行く目的は 一つじゃなかったのだな…。そういう理由なら途中で引き返すことはできないわな…。しかも秘密にしとかないといけない話だし。

それはそれとして。波動砲の仕組みについて嬉しそうに解説してた回を見て以来、真田さんは説明大好き人間かと勝手に思ってたけど。今回の話を見て、逆に何かと説明が足りてない・説明すべき場面でちゃんと説明してくれないキャラかもしれないと思えてきたり。軽く説明しとけば 古代も森も余計な心配せずに済んだのに…。古代兄に対しても、ぼやかしつつ説明しとけば…。

メガネ女子が 古代兄とそういう仲だったという設定もでてきて、これもなるほどと。チラチラと写真?を見てたシーンがあったような気もするけど、そういうことだったのかと。自分、てっきり 真田さんにそういう感情を持っているのかと思ってたけど、そっちじゃなかったんだな…。

何にせよ、ヤマト2199、面白いです。

以上、1 日分です。

過去ログ表示

Prev - 2013/07 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project