画像と写真 · ブラウザー画像 & 描画エディター
12 メガピクセルの写真をブラウザで編集するには、約 48 MB が必要な理由
· 仕組み
画像編集 キャンバス ブラウザ処理
3 MB JPEG は、すべてのピクセルがメモリ内で 4 バイトを必要とするため、デコードされた瞬間に数十メガバイトになります。この投稿では、その算術、ブラウザ ツールがアップロードの上限ではなくデバイスのメモリによって制限される理由、およびファイルが大きすぎる場合の対処方法について説明します。
写真が開くのが遅い、またはまったく開かない - 大きなカメラ ファイルでブラウザ エディタが停止する背後にある問題
圧縮されたメガバイト数では、デコードされた編集フットプリントは予測されません。ゆっくり開くか、まったく開かない写真から始めます。これが、大きなカメラ ファイルでブラウザ エディタが停止する背後にある現実的な問題です。このメモリ計算では、RGBA スナップショット推定ではピクセルあたり 4 バイトが使用されるという実装ルールが適用されるため、1,200 万ピクセルでは、コピーを作業する前に 1 つのビットマップに 48,000,000 バイトが必要になります。入力ファイルの上限は 40 MB ですが、デコードされたサイズはサイドごとに 8,192 とデバイスのピクセル バジェットに個別に制限されます。
1 つの RGBA コピーの幅と高さを 4 で乗算し、ソースを開いた後に報告される縮小された寸法と比較します。デフォルトのバジェットは 33,177,600 ピクセルで、iOS パスは 16,777,216 を使用します。特大のソースは通知により削減されます。作業中のキャンバスと履歴はコピーを追加できるため、これはベースラインであり、タブ メモリ全体を保証するものではありません。
ファイル サイズとデコードされたサイズ — 圧縮するとファイルは小さくなるのに、エディターは非圧縮ピクセルごとに作業する必要がある理由
圧縮されたメガバイト数では、デコードされた編集フットプリントは予測されません。ファイル サイズをデコードされたサイズから分離します。圧縮により、ディスク上の JPEG が小さくなりますが、エディターはすべての非圧縮ピクセルで動作する必要があります。このメモリ計算では、実装されたルールは、入力ファイルは 40 MB に制限されますが、デコードされたサイズは、サイドおよびデバイスのピクセル バジェットごとに 8,192 に個別に制限されます。デフォルトのバジェットは 33,177,600 ピクセルで、iOS パスは 16,777,216 を使用します。サイズが大きいソースは、通知によって比例的に削減されます。
1 つの RGBA コピーの幅と高さを 4 で乗算し、ソースと縮小された寸法を比較します。元に戻すには、最大 40 ステップと約 96 MiB が保持され、1 つの大きすぎるアクションを元に戻せる状態のまま、最も古いエントリが削除されます。作業キャンバスはコピーを追加するため、単一ビットマップの図はベースラインにすぎません。
ピクセルあたり 4 バイト: 算術 — 幅 × 高さ × RGBA により、12 メガピクセルの場合は 48 MB が得られ、作業コピーの場合はさらに多くの値が得られます。
圧縮されたメガバイト数では、デコードされた編集フットプリントは予測されません。重要な演算はピクセルあたり 4 バイトです。幅と高さを乗算し、RGBA は作業コピーの前に 12 メガピクセルに対して 48 MB を与えます。このメモリ計算の場合、実装されるルールは次のとおりです。デフォルトのバジェットは 33,177,600 ピクセルで、iOS パスは 16,777,216 を使用します。サイズが大きいソースは、通知によって比例的に削減されます。元に戻すには、最大 40 ステップと約 96 MiB が保持され、1 つの大きすぎるアクションを元に戻せる状態のまま、最も古いエントリが削除されます。
1 つの RGBA コピーの幅と高さを 4 で乗算し、ソースと縮小された寸法を比較します。 RGBA スナップショットの推定ではピクセルあたり 4 バイトを使用するため、1,200 万ピクセルでは作業コピーの前に 48,000,000 バイトが必要です。作業キャンバスと履歴はコピーを追加するため、単一のビットマップ Figure がベースラインとなります。
制限はどこから来るのか — ブラウザーのキャンバスのサイズの上限、タブごとのメモリ、電話とデスクトップの違い
圧縮されたメガバイト数では、デコードされた編集フットプリントは予測されません。この制限は、ブラウザーのキャンバスのサイズ、タブごとのメモリ、携帯電話とデスクトップの違いなど、いくつかの場所から発生します。このメモリ計算の場合、実装されたルールは、[元に戻す] で最大 40 ステップと約 96 MiB を保持し、1 つの大きすぎるアクションを元に戻せるようにしながら最も古いエントリを削除します。 RGBA スナップショットの推定ではピクセルあたり 4 バイトが使用されるため、1,200 万ピクセルではコピーを作業する前に 1 つのビットマップに 48,000,000 バイトが必要です。
1 つの RGBA コピーの幅と高さを 4 で乗算し、ソースと縮小された寸法を比較します。入力ファイルの上限は 40 MB ですが、デコードされたサイズはサイドごとに 8,192 とデバイスのピクセル バジェットに個別に制限されます。作業キャンバスと履歴はコピーを追加するため、単一のビットマップ Figure がベースラインとなります。
実装される制限はピクセルとサイズのバジェットであり、タブごとのメモリ合計の推測ではありません。
圧縮されたメガバイト数では、デコードされた編集フットプリントは予測されません。ローカル モデルとは、サーバー側の画像処理プールではなく、デバイスのメモリが実質的な上限であることを意味します。このメモリ計算では、RGBA スナップショット推定ではピクセルあたり 4 バイトが使用されるという実装ルールが適用されるため、1,200 万ピクセルでは、コピーを作業する前に 1 つのビットマップに 48,000,000 バイトが必要になります。入力ファイルの上限は 40 MB ですが、デコードされたサイズはサイドごとに 8,192 とデバイスのピクセル バジェットに個別に制限されます。
1 つの RGBA コピーの幅と高さを 4 で乗算し、ソースと縮小された寸法を比較します。デフォルトのバジェットは 33,177,600 ピクセルで、iOS パスは 16,777,216 を使用します。特大のソースは通知により削減されます。作業キャンバスと履歴によりコピーが追加されるため、これがベースラインとなります。
画像のアップロードが発生しない場合でも、ファイル入力には 40 MB 検証上限があります
圧縮されたメガバイト数では、デコードされた編集フットプリントは予測されません。 6000×4000 の写真を考えてみましょう。1 つの完全な RGBA コピーは、デバイスのフィッティング、履歴、またはその他のキャンバスの前に 96,000,000 バイトです。このメモリ計算では、実装されたルールは、入力ファイルは 40 MB に制限されますが、デコードされたサイズはサイドごとに 8,192 とデバイスのピクセル バジェットに個別に制限されます。デフォルトのバジェットは 33,177,600 ピクセルで、iOS パスは 16,777,216 を使用します。サイズが大きいソースは、通知によって比例的に削減されます。
1 つの RGBA コピーの幅と高さを 4 で乗算し、ソースと縮小された寸法を比較します。元に戻すには、最大 40 ステップと約 96 MiB が保持され、1 つの大きすぎるアクションを元に戻せる状態のまま、最も古いエントリが削除されます。作業キャンバスではコピーが追加されるため、これがベースラインとなります。
動作例: 6000×4000 ソースには、デバイスをフィッティングする前に RGBA コピーごとに 96,000,000 バイトが必要です
圧縮されたメガバイト数では、デコードされた編集フットプリントは予測されません。これは、バージョン間で変化するブラウザごとの正確な制限や、RAW および HDR 形式のメモリ動作についてはカバーしません。このメモリ計算の場合、実装されるルールは次のとおりです。デフォルトのバジェットは 33,177,600 ピクセルで、iOS パスは 16,777,216 を使用します。サイズが大きいソースは、通知によって比例的に削減されます。元に戻すには、最大 40 ステップと約 96 MiB が保持され、1 つの大きすぎるアクションを元に戻せる状態のまま、最も古いエントリが削除されます。
1 つの RGBA コピーの幅と高さを 4 で乗算し、ソースと縮小された寸法を比較します。 RGBA スナップショットの推定ではピクセルあたり 4 バイトを使用するため、1,200 万ピクセルでは作業コピーの前に 48,000,000 バイトが必要です。作業キャンバスと履歴によりコピーが追加されるため、これがベースラインとなります。
要点: 算術を知ってから編集する — ブラウザ画像および図面エディタがローカルで大きなファイルを処理する方法と、デバイスが不足した場合の対処方法
圧縮されたメガバイト数では、デコードされた編集フットプリントは予測されません。ここで重要なのは、編集する前に算術を知っておくことです。ブラウザ イメージ & 図面エディタは大きなファイルをローカルで処理しますが、それでもデバイスが不足する可能性があります。このメモリ計算の場合、実装されたルールは、[元に戻す] で最大 40 ステップと約 96 MiB を保持し、1 つの大きすぎるアクションを元に戻せるようにしながら最も古いエントリを削除します。 RGBA スナップショットの推定ではピクセルあたり 4 バイトが使用されるため、1,200 万ピクセルではコピーを作業する前に 1 つのビットマップに 48,000,000 バイトが必要です。
1 つの RGBA コピーの幅と高さを 4 で乗算し、ソースと縮小された寸法を比較します。入力ファイルの上限は 40 MB ですが、デコードされたサイズはサイドごとに 8,192 とデバイスのピクセル バジェットに個別に制限されます。作業キャンバスと履歴によりコピーが追加されるため、これがベースラインとなります。