2chブラウザのサムネ画像MVNOにつらい件につき何らかの対策を考えてみる

昨今、2chに貼られる画像が平気で1メガとかある。アニメgifだと5メガ超えてくる。
原因としてはimgur.comが大きいサイズの画像に対応してしまっていること、リサイズしないこと、アニメgifに対応してしまっていること、そしてそれらの画像がスマホで撮った写真であり、撮った高解像度画像をそのままアップしてしまうことである。最近のスマホはデフォルト最高解像度画像で解像度を落として撮影できないものも多いらしい。

で、送信側に文句言っても仕方ないので、なんとか手法を考える。

あくまで、2chブラウザで見る時、サムネ画像も結局はオリジナルを取得していて大変なので何とかする方針である。

例えばtwitterはパラメーターで取得画像のサイズを調整できる。後ろに;largeとかついてるアレ。でも、imgurが対応していない。

常識的な対策としては画像リサイズ変換サーバーがあるかなと思ったのだが、そういうサービスが無いことに驚く。意外な盲点だろうか。

ということで自作。

ここから大雑把な仕様書及び設計書

  • GAEを使うと転送量で大変なことになるのでいつものdomainkingの安サーバを使うことにする
  • プロキシーサーバ形式にすると2ch.net関連のデータも経由してしまいバンされそうなので、パラメーター渡し形式にする
  • ソースがいじれる2chブラウザのみ対応
  • パラメータはurl、サイズ指定のみ。アスペクトは自動的維持
  • 画像のクオリティは80%に落とす。指定できてもいいのだが、どんな画像かわからない状態で要求クオリティを指定しても意味が無い、と思う

ここから使い方

サンプルURL
http://bnh.ddns.net/main.php?url=http://example&w=300&h=150

url=画像のurl
w=幅
h=高さ
アスペクト比固定なので、縮小した時w、hの小さい方に合わせる。これにより、リクエスト側でサイズ計算の必要がなくなる。余計なお世話だろうか。
info これがあるとURLの画像の情報だけを取得する(後述ヘッダで返す)

サーバ側送信ヘッダ
x-image-width オリジナル画像の幅
x-image-height オリジナル画像の高さ
x-image-size オリジナル画像のサイズ
その他デバッグ用のヘッダあり
x-image-deny グロ画像とか返さない
x-image-same リクエスト画像と同一画像で違うURLがすでに取得済み

とこんな感じで作ったのだが、結局はクライアント側での対応がバリバリに必要であり実用性としてはどうなんだろう。

ていうか、誰か作ってそうな気がするんだがなぁ、検索しても見つからなかった。

ていうか、imgur側で縮小パターン用意してくれてもいいのに。