« きりきりなかんじ2 | メイン | SWAN SONG コンバータ for ONScripter »

2008年08月30日

●FAQ -画像変換編-

今更過ぎるのですが、うちのサイトのスクリプトを使ってONScripterで動かす際のFAQでも。
同じようなところで躓く事が多いですし、あんまりにもな不親切仕様で質問するなと言うのも申し訳ない話でした。

01.立ち絵画像の周りが白や緑一色になっている or 透けた半分しか表示されない

白や緑 透け半分 

一般に立ち絵画像は透過度を表すα値を持っています。
データ抽出時、「αブレンドを行う」等の設定だと透明部分が白や緑で置き換えられてしまい正常に透過されません。
後述するリサイズ方法にもよりますが、この場合は立ち絵が画像のように表示されます。
αブレンドを行わず、α値を保ったまま抽出する必要があります。
最終的に使用する画像ファイル形式はα値を保持出来るPNG、もしくはNScripter用のマスク付きJPG等に変換してください。
最近のうちのスクリプトではPNG推奨ですね。

マスク付きマスク付きjpg

02.αブレンドを行っていないのに、背景画像等が半分しか表示されない

背景が半透け

さて、正しく抽出したはずなのに背景等が上の画像のようになってしまうことがあります。
これが厄介なところなのですが、ONS及びnscrpng.spi(NスクのPNG読み込みプラグイン)で
α値を持たない画像を透過指定"a(lpha)"で読み込んだ場合、上述マスク付きJPGのように
右半分をマスク部分として扱います。その結果、標記の現象が起きてしまいます。

もっとも透過指定"c"で読み込めばいいのですが、変換元ゲームではα値を持たない画像をエンジン側で透過させずに表示することが多いため、変換スクリプト中で判別が出来ません。
(nscrpng.spi ではα値の有無を取得する命令があるのですが、それでもマスク付きJPGとの混在を考えるとNスクのスクリプトで実装するのが難しい)

で、当方としては乱暴に「α値を持たないなら全面不透過のα値を付けてあげればいいじゃない」作戦でやらせて頂いています。
具体的には、FastStoneImageViewerでα値を持たないPNG画像をPNG画像に変換すると何故か(?)全面不透過のα情報が付加されるため、リサイズ時にあわせて行っています。上記ソフトを使うのは、お勧めではなくほぼ必須条件だったのですね。なお、BMP→PNG だと付加されないので要注意。
もちろん同様の工程を別に行って頂いてもかまいません。某NJPG作成ツールも同様の挙動でした。

この2項目に気をつけて画像を用意していただくと、想定通りに表示されるかと思います。
正常

03.画像加工をしないといけない。ImageMagickってなにさ

もっと厄介なのは、最近多い ImageMagick 関連の問題です。
クリッピングや彩度調整など、Nスクで実現出来ない画像表示は事前に画像の適宜加工が必要となっています。
Perlで(私が)楽に画像加工をするには?ってことで ImageMagick (のPerl用モジュール PerlMagick)を選んだのですが、これのインストールがなかなかに難儀のようです。
こちらはエゴさんが詳解な解説を作ってくださっているので、今回ありがたく参考にさせていただいちゃいます。その他PSPで動作させる際の注意事項としても一読しておいて貰えると大変助かります。
おこのみ!R-18 : PSP変換の前に

正直、ImageMagickについてこちらをご覧になっても上手くいかない場合は、誰も適切に答えられないので質問しても無駄だと思うのです……。中途半端なものを作った私を恨んでください。

2009/01/02追記
本日環境を復旧させたのでバージョンを参考までに
ActivePerl 5.8.8.822
ImageMagick 6.3.7.10-Q16
※環境変数 MAGICK_HOME を作成して ImageMagick のインストールフォルダを変数に入れる

Perlスクリプト全般についての注意事項は長くなるので別ページへと。

0?.画像が小さく表示されるよ

ONScripter 20070206

→FAQ -ONS編- へ

コメント

IMDisplayDoc function [DoReadImage] reported an error
Imdisplay.exe: Postscript delegate failed “C:\Documents and Settings\….. \JPA_2004041349.pdf”
とエラーメッセイジが
でます。Postscriptの操作がうまくいっていないようなのですが。このHPに同様な質問がQ&Aにでていました。ご面倒ですが,解決策を教えてください。なお,上記は特許公報中の図です。

IMDisplayDoc function [DoReadImage] reported an error
Imdisplay.exe: Postscript delegate failed “C:\Documents and Settings\….. \JPA_2004041349.pdf”
とエラーメッセイジが
でます。Postscriptの操作がうまくいっていないようなのですが。このHPに同様な質問がQ&Aにでていました。ご面倒ですが,解決策を教えてください。なお,上記は特許公報中の図です。

コメントする

(初めてのコメントの時は、コメントが表示されるためにこのブログのオーナーの承認が必要になることがあります。承認されるまでコメントは表示されませんのでしばらくお待ちください)