qimg : QUERY_STRING image

画像データをエンコードして QUERY_STRING に載せる CGI
画像をアップロードすると、エンコードした 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])