画像処理 – GraphicsMagick

ImageMagickから分岐したとのこと.現在のImageMagickとは必ずしも互換性はない.速いと言われている.

白いキャンバスを作る: gm convert -size 640×480 -type TrueColor xc:white result1.jpg

fig1.jpg の上に fig2.jpg を乗せる.fig2.jpgの左上位置をfig1.jpgの(x,y)にする):
gm composite -geometry +x+y fig2.jpg fig1.jpg fig1.jpg

したがって,サイズが 100×300 である図 fig1.jpg と fig2.jpg を並べて fig12.jpg にするには:
gm convert -size 200×300 -type TrueColor xc:white fig12.jpg
gm composite -geometry +0+0 fig1.jpg fig12.jpg fig12.jpg
gm composite -geometry +100+0 fig2.jpg fig12.jpg fig12.jpg
合成までは bmp やっておいて,最後に jpg に convert した方が画質は良いかも知れない.

画像のサイズなどを知りたい場合:
gm identify fig1.jpg

bmp から Adobe Acrobat で pdf を作るとき,もとの bmp の解像度が高いと,できあがるpdfの紙のサイズが大きいと思われてしまって,OCRがかからない.仕方がないので,いったんjpgに変換してやる.(jpgだと,解像度をファイルの中に格納することができる.)
gm convert -units PixelsPerInch -density 300×300 file1.bmp file1.jpg
理屈としては行く先を .pdf にすれば良さそうな気もするが,これはうまくいかない.また,unitsはデフォルトで dpi のはずだが,なぜか指定しないと cm単位になってしまうようだ.

色の反転
gm convert -negate ….

ipadで再生できるように動画を変換

Handbrake (https://trac.handbrake.fr/) を使う.これで作ったチャプターは,ipadも認識するようだ.
まず,右のpresetからipadを選択.以下のように変更:

  • VideoのQualityで,Avg Bitrateを選択し,512とする.
  • Subtitlesで,適当なtrackを選び,burned in をチェックして add.(addボタンを押すのを忘れないように)
  • Chaptersで,Create chapter markers をチェック

perlでの日本語の取扱

Perlは文字列を内部エンコーディングで扱う.読み書きするところで,外部のエンコーディングによるバイト列から内部エンコーディング文字列に変えるのがわかりやすい.ということで,
openするときにとしてencodingを指定する.

open(FH, "<:encoding(UTF-8)", $file); open(FH, ">:encoding(euc-jp)", $file);
open(FH, ">>:encoding(shiftjis)", $file);

すでに開いてしまっているファイルハンドルのエンコーディングを後から変えるにはbinmodeが使える:

binmode(STDOUT, ":encoding(UTF-8)");

ファイルハンドルごとに指定するのが面倒な場合には,デフォルトを変えてしまうこともできる.
openプラグマを使う.

use open IN => ":encoding(shiftjis)", OUT => ":encoding(UTF-8)"
use open IO => ":encoding(euc-jp)"

これらは標準入出力には影響を与えない.影響させるためにはこの後で:stdを使う:

use open ":std"

別の話として,ソースコード中に日本語をUTF-8で書きたいときにはutf8プラグマを使う.

use utf8

perldoc の,
Encode,
Encode::JP,
unicodeチュートリアル,
unicode FAQ,
open関数,
openプラグマ,
openチュートリアル,
utf8プラグマ
あたりを参照.

昔と違っていろいろweb上に有用な記事がある.以下はかなり良い.
http://www.rwds.net/kuroita/program/Perl_unicode.html
ほかにも,「perl encode 日本語」とかでgoogleを引くといろいろ出てくる.

STATUS_ACCESS_VIOLATION

cygwin をアップデートしたら,emacs の中で STATUS_ACCESS_VIOLATION が頻発するようになった.(Resource temporarily unavailable というのも表示された.)

http://x.cygwin.com/docs/faq/cygwin-x-faq.html の,9.8 (から誘導された9.16) に従って,rebaseall と peflagsall を実行したら直った.forkのエミュレーションに関係しているらしい.