前回書いたページより1年が経ってしまいましたが、DoCoMoは209,503,210と次々と新機種が出てしまいました。
私もとうとうP503isを入手し、iモード版の「くまの檻」を確認したところ・・・あれ?モノクロアイコン???
実は何気にマイナーチェンジしてたのですが、それがアダになって新機種は全て501と同じ扱いになってました(汗)ということで、今回は新機種対応版です。
根本解決ではないので、近日またバージョンアップするかもしれません。
各機種の画面スペックは以下の表のようになっています。
・・・法則性がありませんね(涙)
ez WebやJ Phoneだと対応色数を環境変数で渡してくれるんですけどねぇ。
機種
|
画像サイズ
横×縦 |
色数
|
画像フォーマット
|
501iシリーズ | |||
P501i | 96×120 | モノクロ2色 | GIF |
N501i | 118×128 | モノクロ2色 | GIF |
D501i | 96×72 | モノクロ2色 | GIF |
F501i | 112×84 | モノクロ2色 | GIF |
502iシリーズ | |||
P502i | 96×117 | モノクロ4色 | GIF(アニメーション) |
N502i | 118×128 | モノクロ4色 | GIF(アニメーション) |
N502it | 118×128 | モノクロ4色 | GIF(アニメーション) |
D502i | 96×90 | カラー256色 | GIF(アニメーション,透過) |
F502i | 96×91 | カラー256色 | GIF(アニメーション,透過) |
SO502i | 120×120 | モノクロ4色 | GIF(アニメーション) |
SO502iWM | 120×113 | カラー256色 | GIF(アニメーション,透過) |
NM502i | 111×106 | モノクロ2色 | GIF |
209iシリーズ | |||
P209i | 96×87 | モノクロ4色 | GIF(アニメーション) |
P209is | 96×87 | カラー256色 | GIF(アニメーション,透過) |
N209i | 108×82 | モノクロ4色 | GIF(アニメーション) |
D209i | 96×90 | カラー256色 | GIF(アニメーション,透過) |
F209i | 96×91 | カラー256色 | GIF(アニメーション,透過) |
R209 | 96×72 | モノクロ4色 | GIF |
KO209i | 108×82 | カラー256色 | GIF(アニメーション,透過) |
ER209i | 120×72 | モノクロ2色 | GIF |
503iシリーズ | |||
P503i | 120×130 | カラー256色 | GIF(アニメーション,透過),JPEG |
P503is | 120×130 | カラー256色 | GIF(アニメーション,透過),JPEG |
N503i | 118×128 | カラー4096色 | GIF(アニメーション,透過),JPEG |
D503i | 132×161 | カラー4096色 | GIF(アニメーション,透過) |
F503i | 96×91 | カラー256色 | GIF(アニメーション,透過) |
SO503i | 120×113 | カラー655336色 | GIF(アニメーション,透過) |
210iシリーズ | |||
P210i | 96×91 | カラー256色 | GIF(アニメーション,透過) |
N210i | 118×113 | カラー256色 | GIF(アニメーション,透過) |
D210i | 96×91 | カラー256色 | GIF(アニメーション,透過) |
F210i | 96×113 | カラー256色 | GIF(アニメーション,透過) |
KO210i | 96×96 | カラー256色 | GIF(アニメーション,透過) |
691iシリーズ | |||
R691i | 96×72 | モノクロ4色 | GIF(アニメーション) |
821iシリーズ | |||
P821i | 118×128 | モノクロ4色 | GIF(アニメーション) |
N821i | 118×128 | モノクロ4色 | GIF(アニメーション) |
SH821i | 96×78 | カラー256色 | GIF(アニメーション,透過) |
前回と同じくユーザーエージェント から機種情報を取得し、表示画像を切り替えます。
今回は法則性が無いので、各機種ごとの色数を連想配列で格納しました。
何気なく、J Phone対応になっているのはご愛嬌です(^^;
#!/usr/local/bin/perl # i-mode機種判別画像表示CGI #----------------------- # 表示画像データ #----------------------- # 表示ディレクトリ $IMG_DIR = '../pic/'; # 白黒版 $IMG_M = 'kumaoriim.gif'; # カラー版 $IMG_C = 'kumaorii.gif'; # 4色版 $IMG_4 = 'kumaorii4.gif'; # J-Phone版 $IMG_J = 'kumaorij.png'; #===============================# # メイン #===============================# # 機種情報からファイル名取得 &chk_agent($ENV{'HTTP_USER_AGENT'}); # ファイル情報取得 ($dev,$ino,$mode,$nlink,$uid,$gif,$rdev, $size,$atime,$mtime,$ctime,$blksize,$blocks) = stat($file); # ファイル読込 open(IN, "$file"); binmode(IN); sysread(IN, $buf, $size); close(IN); # 画像表示 print $ContentImage; print $buf; #===============================# # エージェント情報により画面情報取得 # in:HTTP_USER_AGENT #===============================# sub chk_agent(){ local @AGENT = split(/\//,$_[0]); local $color; # ユーザーエージェント情報 %AGENT_INFO = ( "P501i",2, "N501i",2, "D501i",2, "F501i",2, "P502i",4, "N502i",4, "N502it",4, "D502i",256, "F502i",256, "SO502i",4, "SO502iWM",256, "NM502i",2, "P209i",4, "P209is",256, "N209i",4, "D209i",256, "F209i",256, "R209",4, "KO209i",256, "ER209i",2, "P503i",256, "P503is",256, "N503i",4096, "D503i",4096, "F503i",256, "SO503i",655336, "P210i",256, "N210i",256, "D210i",256, "F210i",256, "KO210i",256, "R691i",4, "P821i",4, "N821i",4, "SH821i","256" ); $ContentImage = "Content-type: image/gif\n\n"; #----------------------- # imode判別 #----------------------- if($AGENT[0] eq "DoCoMo"){ # 色情報取得 $color = $AGENT_INFO{$AGENT[2]}; # 色からファイル名設定 # 未定義時 if(!defined($color)){ $file = "$IMG_DIR$IMG_C"; } elsif(256 <= $color){ $file = "$IMG_DIR$IMG_C"; } elsif(4 <= $color){ $file = "$IMG_DIR$IMG_4"; } else{ $file = "$IMG_DIR$IMG_M"; } } #----------------------- # J-Phone判別 #----------------------- elsif($AGENT[0] eq "J-PHONE"){ $ContentImage = "Content-type: image/png\n\n"; $file = "$IMG_DIR$IMG_J"; } #----------------------- # その他機種 #----------------------- else{ $file = "$IMG_DIR$IMG_C"; } } |