DotLCD Camera

ブラウザ内で画像を4階調LCD風に変換する、ローカル処理ツールと実装ガイド

画像を端末内で処理するDotLCD Cameraと、解像度・パレット・ブラウザAPI・安全な扱い方を解説するメディアです。

ブラウザで使うDotLCD Cameraを開く →画像は端末内で処理されます。

50 articles

テーマから選ぶ

基本・プライバシー

DotLCD Cameraとは何か

DotLCD Cameraとは何かは、Canvas APIを使い、カメラまたは選択画像を低い論理解像度へ縮小し、4階調、均一なセル、限定的な時間応答として再描画するWeb表現です。

基本・プライバシー

画像を端末内処理に限定する理由

画像を端末内処理に限定する理由は、ユーザーが選んだ画像やカメラ映像をブラウザ内で処理し、変換のための画像送信を必須にしない設計です。

基本・プライバシー

カメラ権限と画像読込への代替導線

カメラ権限と画像読込への代替導線は、カメラ利用を明示的な許可に依存させ、拒否時や非対応環境ではファイル選択へ切り替える導線です。

基本・プライバシー

WebGL2とCanvas 2Dフォールバックの設計

WebGL2とCanvas 2Dフォールバックの設計は、WebGL2を高速な主経路とし、利用できない場合にCanvas 2Dで同じ変換規則を維持する二段構成です。

画作り・解像度

論理解像度を下げる意味

論理解像度を下げる意味は、入力画像を小さな内部キャンバスへ縮小して情報量を先に制限し、その後に整数倍で拡大する処理です。

画作り・解像度

4階調化の閾値設計

4階調化の閾値設計は、画素の明るさを4つの出力段階へ割り当てる閾値設計です。

画作り・解像度

16段階ブライトネスの作り方

16段階ブライトネスの作り方は、連続スライダーではなく0から15までの離散値で画像全体の明るさ補正を制御する設計です。

画作り・解像度

16段階コントラストの作り方

16段階コントラストの作り方は、中間値を基準に明暗差を0から15までの離散値で調整する設計です。

画作り・解像度

Bayer 4x4ディザーを選ぶ理由

Bayer 4x4ディザーを選ぶ理由は、4x4の固定閾値行列を繰り返し、少ない階調で規則的な中間調を表す ordered ditheringです。

画作り・解像度

4色パレットを作る判断

4色パレットを作る判断は、4つの階調値を、単なるグレーではなく選択した4色へ対応させる設計です。

画作り・解像度

整数倍拡大でドットをそろえる

整数倍拡大でドットをそろえるは、論理画素を2倍、3倍、4倍のような整数倍率で拡大し、各セルの幅を均一に保つ設計です。

調整・保存

均一な液晶セルの表現

均一な液晶セルの表現は、各論理画素を同じ形状、間隔、境界条件で描き、セルごとのばらつきを意図的に抑える表現です。

調整・保存

不器用な自動露出の状態機械

不器用な自動露出の状態機械は、毎フレーム連続補正するのではなく、一定間隔で測定し、段階的に明るさを更新する状態機械です。

調整・保存

露出固定を置く理由

露出固定を置く理由は、自動補正値の更新を止め、同じ条件で構図や動きを比較できるようにする操作です。

調整・保存

FPS表示を読者にどう伝えるか

FPS表示を読者にどう伝えるかは、一定期間に完了した描画回数から実測更新頻度を示し、カメラの公称FPSと区別する表示です。

調整・保存

PNG書き出しとメタデータの注意

PNG書き出しとメタデータの注意は、Canvasの現在画像をPNGのBlobへ変換し、ユーザー操作で保存できるようにする出力です。

調整・保存

WebP書き出しの選び方

WebP書き出しの選び方は、CanvasからWebP出力を試み、非対応時の形式判定やPNGへの切替を含めて扱う出力です。

調整・保存

プリセットJSONの保存と読込

プリセットJSONの保存と読込は、画質設定や表現設定を画像とは別のJSONとして保存し、明示的に選択されたファイルから復元する仕組みです。

調整・保存

シードで表現を再現する考え方

シードで表現を再現する考え方は、ランダムな劣化や揺らぎに同じ初期値を与え、同一実装内で同じ系列を再現しやすくする設計です。

プリセット

Clean Four-Toneプリセット

Clean Four-Toneプリセットは、低解像度化と4階調化を中心にし、残像、故障表現、自動露出の癖を抑えた基準プリセットです。プリセットはWeb標準が定義する製品機能ではなく、DotLCD側で複数の設定値をまとめる設計単位です。

プリセット

Stubborn Autoプリセット

Stubborn Autoプリセットは、明るさの測定と補正を連続的に滑らかにせず、待機と段階変更を伴わせる自動露出プリセットです。プリセットはWeb標準が定義する製品機能ではなく、DotLCD側で複数の設定値をまとめる設計単位です。

プリセット

Used LCDプリセット

Used LCDプリセットは、均一セルを基礎に、軽い色褪せ、局所的な応答差、わずかなムラを重ねた中古液晶風プリセットです。プリセットはWeb標準が定義する製品機能ではなく、DotLCD側で複数の設定値をまとめる設計単位です。

プリセット

Memory Ghostプリセット

Memory Ghostプリセットは、過去フレームのセル状態を短時間保持し、静止した痕跡が段階的に薄れる時間応答プリセットです。プリセットはWeb標準が定義する製品機能ではなく、DotLCD側で複数の設定値をまとめる設計単位です。

プリセット

Faulty Panelプリセット

Faulty Panelプリセットは、固定位置のドット欠け、行や列の欠落、局所ムラを再現可能な規則で加える故障パネル風プリセットです。プリセットはWeb標準が定義する製品機能ではなく、DotLCD側で複数の設定値をまとめる設計単位です。

画像入力

画像ファイルを安全に読み込む

画像ファイルを安全に読み込むは、ユーザーが明示的に選択した画像だけを検査し、デコード後に縮小して処理する入力経路です。

画像入力

ドラッグ&ドロップ入力の設計

ドラッグ&ドロップ入力の設計は、ファイル選択と同じ検証処理へ接続する補助入力であり、唯一の操作方法にはしない設計です。

画像入力

クリップボード画像の取扱い

クリップボード画像の取扱いは、ユーザー操作を起点としてクリップボード内の画像形式だけを選び、明示的に読み込む入力経路です。

画像入力

画像の向きとEXIFを扱う注意

画像の向きとEXIFを扱う注意は、撮影時の向き情報と実画素の並びを区別し、表示方向を確定してから論理解像度へ縮小する処理です。

画像入力

巨大画像を縮小して処理する

巨大画像を縮小して処理するは、元画像をフルサイズのCanvasへ展開し続けず、デコードまたは描画段階で作業寸法へ縮小する設計です。

ブラウザ実装

WebGPUを実験的に使う判断

WebGPUを実験的に使う判断は、WebGL2やCanvas 2Dを置き換える必須機能ではなく、計算・描画経路を比較検証する実験バックエンドです。

ブラウザ実装

OffscreenCanvasとWeb Worker

OffscreenCanvasとWeb Workerは、Canvas処理の一部をDOMから分離し、対応環境ではWorkerへ転送してメインスレッドの負荷を減らす設計です。

ブラウザ実装

WebCodecsをMVP外に置く理由

WebCodecsをMVP外に置く理由は、低水準の動画フレーム・コーデック制御を初期版の必須要件にせず、静止画とライブプレビューを先に成立させる判断です。

ブラウザ実装

動画録画のフォールバック設計

動画録画のフォールバック設計は、MediaRecorderとCanvasのMediaStreamを利用できる場合だけ録画を提供し、非対応時は連番静止画や単一画像へ退避する設計です。

ブラウザ実装

PWAでオフライン利用する範囲

PWAでオフライン利用する範囲は、アプリ本体と必要な静的資産を事前キャッシュし、ネットワークなしでも画像変換の主要機能を開ける範囲です。

ブラウザ実装

Service Workerの更新とキャッシュ

Service Workerの更新とキャッシュは、オフライン資産を管理しつつ、旧版の処理コードと新しいプリセット定義が混在しないよう更新単位を制御する仕組みです。

対応・安全性

映像表現ツールのアクセシビリティ

映像表現ツールのアクセシビリティは、Canvasの見た目だけに依存せず、設定名、状態、停止操作、キーボード操作、コントラスト、代替説明を提供する設計です。

対応・安全性

点滅や残像を弱める設定

点滅や残像を弱める設定は、OSやブラウザの動き低減設定を初期値へ反映し、残像、露出ジャンプ、故障点滅を個別に弱められる設計です。

対応・安全性

カメラ停止を常時可能にする

カメラ停止を常時可能にするは、取得中のすべてのMediaStreamTrackを利用者が即時停止でき、UIと描画ループも停止状態へ移す設計です。

対応・安全性

カメラ権限を拒否したときの案内

カメラ権限を拒否したときの案内は、拒否を故障扱いせず、理由を断定しない説明と画像読込への代替導線を提示するエラー設計です。

対応・安全性

sRGBと画像の色空間を扱う注意

DotLCD Cameraでは、入力画像の色空間と、Canvasが画素を読み書きする色空間を意識して設計する必要があります。基本方針としては、再現性を優先する処理経路をsRGBへそろえ、Display P3などの広色域入力は、対応状況を確認したうえで明示的に扱うのが安全です。

対応・安全性

高DPIで整数倍表示を保つ

高DPI画面では、CSS上の表示寸法とCanvas内部の描画寸法を分けて管理し、DotLCDの論理セルが物理ピクセル上でもできるだけ均一になるよう調整します。ただし、`devicePixelRatio`が整数とは限らないため、「CSSピクセル上の整数倍」と「物理ピクセル上の完全な整数倍」は別の条件です。

対応・安全性

WebGLコンテキスト消失への備え

WebGLコンテキストは、GPUやドライバ、メモリ、ブラウザ判断などにより実行中に失われる場合があります。DotLCD Cameraでは、コンテキスト消失時に描画を止め、状態を保持し、復旧後にGPU資源を作り直すか、Canvas 2Dへ切り替える設計が必要です。

対応・安全性

スマホの発熱と品質モード

スマートフォン向けのDotLCD Cameraでは、最大品質を常時維持するより、論理解像度、処理FPS、残像バッファ、高DPI倍率を段階的に下げられる品質モードを用意する方が安全です。ブラウザから端末温度を直接取得できる一般的なWeb APIは前提にせず、処理時間、FPS低下、ページ可視性、利用者の選択を判断材料にします。

対応・安全性

ブラウザ対応状況の調べ方

DotLCD Cameraの対応状況は、「サイトが開くか」ではなく、カメラ、画像入力、Canvas 2D、WebGL2、書き出し、Worker、PWAなどの機能単位で調べます。互換表だけで対応済みと判断せず、機能検出と実機試験を組み合わせます。

比較・注意点

写真の権利と加工画像の公開

DotLCD Cameraで写真を4階調化しても、元写真や被写体に関する権利が自動的に消えるわけではありません。公開前に、写真を利用する権利、写っている人物、著作物、商標、施設ルールなどを確認します。

比較・注意点

特定製品の完全再現を避ける理由

DotLCD Cameraは、低解像度、4階調、均一セル、時間応答という一般的な表現要素を研究・実装するツールとして設計し、特定製品の名称、外観、UI、配色、ロゴ、独自挙動を一体として完全再現することは避けます。

比較・注意点

CRT表現とLCD表現を混同しない

DotLCD Cameraでは、CRTに見られる走査線、発光のにじみ、サブピクセルマスク、画面湾曲を中心にせず、LCDの均一セル、少ない階調、色付きパネル、応答遅れ、固定欠陥を中心に設計します。

比較・注意点

変換前後比較を設計する

変換前後比較は、元画像とDotLCD出力を同じ構図、同じ表示領域、同じ拡大率で見比べられるよう設計します。単なる見栄えの演出ではなく、論理解像度、4階調、パレット、残像が何を変えたかを確認する検証機能です。

比較・注意点

DotLCD Cameraの使い方ガイド

DotLCD Cameraは、カメラまたは画像ファイルを、低解像度、4階調、均一な液晶セル、限定的な時間応答へ変換する端末内処理型のWebツールです。最初は画像ファイルとClean Four-Toneプリセットから試し、その後にカメラ、残像、露出、故障表現、書き出しへ進むと違いを理解しやすくなります。

このメディアの読み方

変換ツールの説明と実装ガイドを分けています。画像の取り扱い、ブラウザの権限、対応状況を確認してから利用してください。