Just another Ruby porter,


9月上旬の日記 | RDF

2014-09-01 (Mon)

convertでものすごく重くなる処理をなんとかする

convertはとにかく画像を全部読み込もうとする。
圧縮されてるものは伸長される。
だから数が多いと途中から他のプロセスにも影響が出るくらい遅くなる。
ということはメモリに読み込ませなければいいわけで、
-limit area 8kとかで制限すればとりあえず回避できる。
mmapになるから遅くなるけど、確実に進む。-debug cacheでその様子がわかる。


2014-08-31 (Sun)

あばれる本文を何とかした

あばれるとは言っても本文自体の大きさは一定なので、
-trimで求めた下底を基準にすることにした。
本文の高さはまあ適当にどれか特徴的なページから手動で計測。
displayなら中クリックでクリックした座標がわかる。
だいたいこんな感じだ。

find images -name '*.pbm.xz' \
parallel -q convert {} \
  -chop ${LEFT}x${TOP} \
  -gravity SouthEast -chop ${RIGHT}x${BOTTOM} -gravity NorthWest \
  -virtual-pixel edge -blur 0x4 -fuzz 10% -trim \
  -format "xzcat {} | gm convert \
   - -chop ${LEFT}x${TOP} \
   -gravity SouthEast -chop ${RIGHT}x${BOTTOM} -gravity NorthWest +repage \
   -crop '%[fx:w+10]x%[fx:H+10]+%[fx:page.x>5?page.x-5:0]+%[fx:(page.y+h-H)>10?(page.y+h-H-10):0]' \
   -resize $yresize\% \
   -gravity center \
   -background white -extent 738x965 \
   -type grayscale -depth 2 PGM:- | \
   convert - \
   -define "png:compression-level=0" +repage -strip \
   -verbose '$outdir'/{/.}.png" info: | ${sh-sh}

元々は

   -crop '%[fx:w+10]x%[fx:h+10]+%[fx:page.x>5?page.x-5:0]+%[fx:page.y>5?page.y-5:0]' \

となっていた。-trimの結果のhは捨てて先の下底基準にしている。
180度回転したほうがわかりやすいかもしれないなあ。

あと-resize 738x965とはしないで全部同じ倍率にしている。
そうしないと見出しのように1行しかないようなページで-trimの結果巨大な文字が現われることになる。

あとGraphicsMagickを使うと2倍ぐらい速くなる。
無圧縮にできないもんだから最終的にはまたImageMagickを使ってるところがあれだ。

これはノンブルが上にある場合なので下にあるときはまずい。
そういう意味でも180度回転のほうがいいな。chopもあるし。


2014-08-30 (Sat)

GraphicsMagickでは無圧縮PNGは作れない

convertには-qualityというオプションがあるが、これが結構曲者。
PNGの場合は

For the MNG and PNG image formats, the quality value sets the zlib compression
level (quality / 10) and filter-type (quality % 10). Compression levels range
from 0 (fastest compression) to 100 (best but slowest). For compression level
0, the Huffman-only strategy is used, which is fastest but not necessarily the
worst compression.

If filter-type is 4 or less, the specified filter-type is used for all scanlines:

     0: none
     1: sub
     2: up
     3: average
     4: Paeth

となっている。0から100まで指定できるようなことが書いてあるが、実は100は90と同じ意味。
10の位がcompression levelということになっている。
levelがでも0でもなぜかハフマン圧縮だけは有効になってるらしく無圧縮にはできない。
そこで先日の -define png:compression-level=0 という話になる。
でもGraphicsMagickではこれに対応してないので、結局無圧縮PNGは作れないことになる。
実に残念。


2014-08-29 (Fri)

ABP

例のtwitterのanalyticsを見てみたら

SITE A problem occurred while loading the page. To use this site, you need to disable AdBlock or any other ads-blocking extension you are using, or customize it to show ads on this site. /SITE とか言われて、なんで広告と関係があるんだと思った。
ああ、ひょっとしてtwitter見てるとたまに変な表示になったりするのはこれが原因だったか?


2014-08-28 (Thu)

涼しい

一気に秋になったかのよう。ことしの夏は真夏しかなかったな。
向う一週間の予報を見ても30度行くか行かないかくらいで、
まじで夏は終わり?


9月上旬の日記 | RDF


WWW を検索 jarp.does.notwork.org を検索

わたなべひろふみ
Key fingerprint = C456 1350 085F A320 C6C8 8A36 0F15 9B2E EB12 3885
Valid HTML 4.01!