画像データをエンコードして QUERY_STRING に載せる CGI 。
http://dame.dyndns.org/misc/qimg/
画像をアップロードすると、エンコードした URI を表示してくれる。以下は生成した例。
画像は飛廉さんより拝借。
対応フォーマットは gif 、png 、jpg のみ。対応サイズは 10KB までだけど、マイクロソフトの情報によると「[IE] URL に使用可能な文字数は最大 2,083 文字」だそうなので、大抵の場合はこっちの制限の方が厳しい。実際問題、32 x 32 くらいの大きさでないと使えない (笑)
これを作った理由 (というか背景) は 3 つある。
- 1 つめはチャット。チャットをしているとき、ローカルにある画像を相手に見てもらいたい。けど、ホームページスペースは持ってないこともあるし、画像掲示板はサーバ側で画像を保存されるのが気に食わない。そういうとき、これで URI にエンコードすれば、テキストベースで渡せるし相手も気楽に参照できる。はずだった。でも URI 長すぎだし、サイズ制限も厳しすぎ (笑)
- 2 つめは、なんとなくテーブルアートに対抗してみたかった。
- 3 つめは、QUERY_STRING が好きだから。ちょっといじめてみたくなった。これは達成かな。
エンコード・デコードのアルゴリズムは以下のとおり。他に特筆するところがないのでソースコードは出さなくてもいいよね。
# エンコード (data : 画像データ) [Zlib::Deflate.deflate(data, Zlib::BEST_COMPRESSION)].pack("m").gsub("\n", "").tr("/+=", "_.:") # デコード (data : エンコードされたデータ) Zlib::Inflate.inflate(data.tr("_.:", "/+=").scan(/.{60}|.*\z/).join("\n").unpack("m")[0])