CSSzoom
プロパティを使用する場合、「バイリニア」やその他の高度なズーム アルゴリズムではなく、ブラウザに「最近傍」を使用させるにはどうすればよいですか?
私の設定はキャンバスを含むdivであり、divはJavaScriptを介してズームセットを取得し、CSSで<div style="zoom:3200%">...</div>
使用している最近傍を取得します。image-rendering: -webkit-optimize-contrast
アプリはこちらから入手できます(「z」でズームイン、「shift-z」でズームアウト)、CSS はこちら
OSX 上の Chrome での目的の効果は次のとおりです (ズームは 3200% に設定されています)。
しかし、これは Windows 7 の Chrome でも同じです。
どちらの場合も、すぐに使用できる「バニラ」Chrome (バージョン 15.xx) であり、実験的なフラグはオンになっていません。
Windows で Chrome に最近傍を使用させるにはどうすればよいですか? さらに言えば、どうすればすべてのブラウザを納得させることができるでしょうか? Safari も最近傍を使用しません (これまでのところ、このアプリは WebKit ベースのブラウザーでのみ動作します)
CSSimage-rendering
プロパティは Chrome/OSX に影響し、望ましい効果が得られます。しかし、Chrome/Windows と Safari(5.1)/OSX はどちらもそれを完全に無視しているようです。運が悪いだけだと何かが教えてくれますが、聞いてみようと思いました。
div コンテナーでの使用zoom
は非常にシンプルで、Chrome/OSX で美しく機能します。キャンバスを内部でスケーリングする必要がある場合は、それも可能です。しかし、可能であれば、文字通り1行のコードソリューションを好むでしょう!
更新: ヘルプの使用を発見しましたimage-rendering: optimizeSpeed
。ただし、Chrome/Windows では気難しいようです。あまりにも多くの要素 (最初に試したコンテナとすべてのキャンバス) に設定すると、効果がありません。しかし、これをちょうど に適用するとcanvas
、98% の結果が得られます。
今私の問題は、ズームイン中に初めて描画することです。それは完全に機能し、他のすべての後続の描画アクションは実行中にぼやけ、その後正しい最近傍に戻ります(私のアプリは最初にスクラッチキャンバスに描画し、次に描画を実際のキャンバスに適用します)。Chrome がバイリニアの使用を主張するスクラッチ キャンバスには奇妙な点があります。掘り下げれば解決できると思います。
UPDATE2:image-rendering
Chrome/Windows ではうまく実装されておらず、少しバグがあるようです。値optimizeSpeed
とoptimizeQuality
が Chrome/Windows でサポートされていないことを確認できました。それらに画像レンダリングを設定すると、Chrome はその設定を無視します。Chrome/Windows は を認識しますが-webkit-optimize-contrast
、一貫して使用するとは限りません。Chrome は、バイリニア スケーリング アルゴリズムと思われるアルゴリズムと最近傍アルゴリズムの間をほぼランダムに切り替えます。Chrome に最近傍を常に使用させることができませんでした。
Windows で Chromium 17 のビルドを試してみましたが、同じように動作します。
Firefox (8.0.1) は非常に有望に見えますが、非常に優れているように見え-moz-crisp-edges
ます。当初、私はこのアプリの「理想的なブラウザ」として Chrome をターゲットにしていましたが、Firefox に切り替えるだけかもしれません。
最終的に、適切なサポートimage-rendering
が Chrome のパイプラインにあるようですが、まだ完全ではありません。WebKit 自体は、すべての画像レンダリング値を完全にサポートしていると主張していますが、Chrome が使用する WebKit のビルドは、この新しい修正に完全には更新されていないと思います。