Javascriptで動的Image生成やってみた
http://d.hatena.ne.jp/shin/20091211/p4
やってみた。動的ビットマップのバイナリ生成はすでに画像加工が不可能なGoogle App Engineのために実装していたのでそれをコピーするだけ。さすがGWTだぜ。Javaのコードそのまま動くってすばらしい。base64エンコードを作って実行!
うごいた。けど、IE 6だとdateスキーマ対応してないのね。がっかり。
また、base64だとサイズ制限があるようで64*64くらいのサイズが限界だった。
charset=iso-8859-7にしてURLエンコードすればサイズ制限はないようだ。1024*768とかいける。
ただし、これくらいのサイズになるとしぬほど遅い。文字列生成どころかバイナリに戻すのも遅いのかな。なんせ1ピクセルのデータで12文字もつかうんで、そのファイルサイズはお察しください。640*480でもぜんぜん遅くてだめ。バイナリを生成した後にエンコードするというのをやめて、直接エンコードされるメモリマップを作って、ピクセルのアクセスのたびにそれをいじるようにすれば多少増しになるかもしれないけど、それだとfillしたりすると逆に遅そうな…。
あとでかいサイズの画像を表示したときに間違っても画像のプロパティとかbugzillaとかでひらかないように。分単位でブラウザが固まり、アプリケーションが応答なしと表示されます。
できるにはできたけど、IEじゃダメという一番動いてほしかったところががっかりだったので従来の実装に戻そう…。期待していただけにがっかり具合もかなりのもの。