mieki256's diary



2007/04/23(月) [n年前の日記]

#2 [iappli] Palette の使い方がさっぱりわからん。

エミュレータ上では意図通りの表示になってるように見えるのだが。実機で動かすと変な色になる。うーん。

エミュレータ上でのトレース情報。
PALIMG:0 EntryCount:16
ff000000
ff00f2ff
ff05cbff
ff251dee
ff241ded
ff241ced
ff736783
ff8810e6
ffd8d6d4
ff2ab3ce
ff317da6
ff1e90f6
ff33516b
ff242e44
ff272fa7
ffffffff

P902iS上でのトレース情報。
PALIMG:0 EntryCount:16
0
ff80
fe40
e8e4
e8e4
e8e4
832e
e091
d6bb
cd85
a3e6
f483
6a86
4164
a164
20

値の関連性がまったく見えてこない。機種依存の値を返すのであろうか。となると、ロードした画像のパレットを読んで、計算で変化させて、なんて処理は無理ということに…。

ドキュメントには、getEntry() で取得した値は、Graphics.getColorOfRGB(r, g, b) の返す値と同じ値が入ってる、とある。それを信じて、RGB値を別途持って自前で作成し直すことにしてみたり。

gif画像からパレット値を取得してテキスト出力する perlスクリプトを作成。ActivePerl 5.8.8 build 820 + ImageMagick 6.3.3 Q8 (PerlMagick) で。
_getpalette.pl
_出力結果。 これをJavaソースの中にコピペして使った。

P902iS で、ロードした画像から読んだパレット値と、Graphics.getColorOfRGB() の返り値を、トレース情報で出してみたり。左が、画像から読んだ値。右が、Graphics.getColorOfRGB() の返り値。
PALIMG:0 EntryCount:16
0:0
ff80:ff80
fe40:fe40
e8e4:e8e4
e8e4:e8e4
e8e4:e8e4
832e:832e
e091:e091
d6bb:d6bb
cd85:cd85
a3e6:a3e6
f483:f483
6a86:6a86
4164:4164
a164:a164
20:ffff
PALIMG:1 EntryCount:16
ffff:ffff
e924:e924
47a:47a
47a:47a
1082:1082
2b4:2b4
356:356
126e:126e
3f8:3f8
2187:2187
4bb:4bb
59e:59e
f681:f681
7ac6:7ac6
b555:b555
20:ffff
PALIMG:2 EntryCount:16
ffff:ffff
0:0
f404:f404
f314:f314
(以下略)
だいたいは合ってるみたいだけど。最後のパレット値だけが違う。何故。P902iSはドキュメント通りの実装状態じゃないということなのか。

む。一番最後のパレット値の場所は、透過色指定されたソレの場所だな。そこだけは通常と異なる値を返す、ということなのか。考えてみれば、透過色なんだから入ってるRGB値はどうでもいいのだな。単に「ここが透過色である」ことを示す値さえ入ってれば、動作上の問題はないのかもしれん。

さておき。パレット値データをプログラム中に含めてしまったことで、プログラム容量が結構増えてしまった。残り 381byteしかない…。今現在、解決策として思いつくのは、以下のとおり。

2007/04/25追記: :

スクラッチパッドの中にgifがあるんだから、gifの中のパレット値格納場所を参照してRGB値を取り出せばいいんじゃないのか。ということに今頃気づいた。

以上です。

過去ログ表示

Prev - 2007/04 - 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

カテゴリで表示

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


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

Powered by hns-2.19.6, HyperNikkiSystem Project