Category soft.

拙作編集ツールスクリーンショット

結局自分で作ってみた。exerb で EXE 化しようと思ったら mswin32 版の Ruby では zlib が原因不明の SEGV で落ちるのでどうしたものかと。

Ruby + VisualuRuby で GUI 作った。iTXt 以外は TweakPNG があるので何もしない。UI は見ての通り TweakPNG のパクり。

pngtxt.rb
GUI 部分。VisualuRuby 使ってます。何故かポップアップメニューが右ダブルクリックじゃないと出ない謎。
png.rb
iTXt を編集するのに使える部分だけ実装。ただ UTF-8 への変換はこのクラスはやらない。

使っているライブラリは Uconv と zlib と VisualuRuby かな。VisualuRuby が Win32API 使ってるか。といいますかですね、GUI まですぐ作れる Ruby ってやっぱ偉大なんですよ。

zlib.dll を変えていったら(?)直った。よく分からないけどめでたし。

  1. トップ
  2. soft
  3. PNG チャンク編集ツール 2Edit PNG iTXt chunk

もっとちゃんと調べてみました。でもあんまり見つからない。(google: png iTXt)

PNGCRUSH
iTXt を埋め込めるらしいですが、コマンドラインで、僕の環境では起動したら CRUSH しました。なるほど。
TweakPNG
チャンクエディタ(&ビューワ) 。でも iTXt は (存在していても問題ないみたいですが) キーワードの表示しかできません。編集・追加もできません。と README に書いてありました。
もじうめ
読むかぎり tEXt を使用しているようです。説明にはちゃんとPNGの仕様上、アルファベットだけにしてください。と書いてあります。
PNG Comment Editor
tEXt に Shift_JIS データをそのまま書き込むようです。説明書に書いてないのでバイナリエディタで開きました。

PNG 仕様書の tEXt チャンクの仕様には

テキストは ISO/IEC 8859-1 (Latin-1) [ISO/IEC-8859-1] 文字集合に従って解釈されます。テキスト文字列はどのような Latin-1 も格納できます。テキスト文字列中の改行は LF 文字(十進 10)ひとつで表現されるべきです。ほかのコントロール文字をテキスト中に使うことは推奨されません。

と書いてあるので、マルチバイトは含めないみたいです。日本語に拘るなよとか言われたらそれまでという感じですけど、XML 格納するなら I18N 必須じゃないかなぁと思います。

てかですますってなんか……

png.rb

スーパー適当実装 iTXt 埋め込み用クラス(でもサイズとかも取得できるよ)。微妙に中途半端だけど力尽きたのでまた今度にします。デバッグ用のコード (p) 満載。

  1. トップ
  2. soft
  3. PNG チャンク編集ツール