写真をゲームボーイ風にするCSS & SVG filterのデモ

2012-07-21

簡単すぎる説明

説明が面倒なので、3行でまとめると

  1. ゲームミュージックと生存確認をかねた画期的な: svgのfilterを使ってドット階調っぽい効果をつけるがかっこよかったので、真似してみた
  2. 単に白黒2色だと味気ないので、せっかくだから『閲覧ページをゲームボーイ風にするGreasemonkey』を作ってみた
  3. ……でやってみたが、ベタにやると荒いし、かといって丁寧にすると重くなってしまった

「全てのページをゲームボーイ風にするGreasemonkey」をCSS & SVG filterで作ってみたものの、得意なドット絵の技術を応用して綺麗な加工にしようと頑張った結果、やり過ぎて動作が非常に重くなってしまったのでボツに。

……とは言え、せっかくなので公開しておくか、という

(※Greasemonkeyは紹介記事を現在書いている途中で、後日公開予定)(追記:公開した

(2012年7月現在、CSSのSVG filterに対応しているブラウザはFirefoxだけ)

画像をゲームボーイ風にするには

ゲームボーイの色

ゲームボーイは4階調のモノクロ液晶しか表示できなかった。(モノクロだが初代ゲームボーイの液晶に合わせて、若干黄色がかった色合いにはしている。)

カラー写真がモノクロになってしまうのは当然なのだが、4色しかないとは言え今回は画面全体のピクセル幅も広いのでタイルパターンを用いることで繊細なグラデーションは十分表現可能。

タイルパターンとは?

使える色数が少ない環境でも、ピクセルを組み合わせた模様を作り階調を表現するドット絵の基礎的な技法。

例えば

グラデーション

4階調でグラデーション

こうした画像を4色で表現しようとした場合、単純なベタ塗りではこのような4階調しかならずとてもグラデーションには見えないが

同じ4色しか使わなくてもタイルパターンを用いるとこのようになる

グラデーション4階調でグラデーション7階調でグラデーション13階調でグラデーション25階調でグラデーション

4階調でグラデーション7階調でグラデーション13階調でグラデーション25階調でグラデーション(2倍に拡大)

上から順に、4階調、7階調、13階調、25階調。

当然ながら、タイルパターンを使って細かくすると滑らかなグラデーションが得られるが、反面 SVGのfilterとしては重くなってしまう。以下に実際どのようにfilterが適用されるかのサンプルを掲載

元画像

桜 椿 夕暮れ 釜飯 ネコ 雪椿

マウスカーソルを画像に重ねると、元画像が確認できます


4階調

4階調でグラデーション

桜 椿 夕暮れ 釜飯 ネコ 雪椿

7階調

7階調でグラデーション

桜 椿 夕暮れ 釜飯 ネコ 雪椿

13階調

13階調でグラデーション

桜 椿 夕暮れ 釜飯 ネコ 雪椿

25階調

25階調でグラデーション

桜 椿 夕暮れ 釜飯 ネコ 雪椿

もちろん25階調が最も再現度が高いが、実際にこれをGreasemonkeyにしたところ非常に動作が重くページのスクロールでもガタガタにになってしまうほど。そのため、なるべく処理を軽くするためにfilterを見直して軽量化を行った

同時に写真が暗く補正されてしまう問題も対応して、タイルパターンと抽出処理を修正。

下記の6階調版をとりあえずGreasemonkeyに使う予定

比較のために、左右に上述の4階調・7階調を並べてみたが、まぁまぁゲームボーイ風に見えるのではないかと

4階調

4階調でグラデーション

桜 椿 夕暮れ 釜飯 ネコ 雪椿

6階調(軽量版)

6階調でグラデーション

桜 椿 夕暮れ 釜飯 ネコ 雪椿

7階調

4階調でグラデーション

桜 椿 夕暮れ 釜飯 ネコ 雪椿

更新履歴