ブラウザでアンチエイリアシングを行わずに画像を引き伸ばすにはどうすればよいですか?

DDD
リリース: 2024-11-02 14:40:02
オリジナル
263 人が閲覧しました

How to Stretch Images Without Antialiasing in a Browser?

ブラウザでアンチエイリアスを使用せずに画像を拡大する

ピクセル アートの領域では、鮮明なエッジを維持しながら画像をより大きなサイズに拡大することは、チャレンジ。スケーリング アルゴリズムでは、不要なアンチエイリアスが発生し、シャープな線がぼやけ、望ましい美観が損なわれることがよくあります。

この問題に対処するために、次のようないくつかの方法が検討されています。

CSS テクニック

CSS、JavaScript、HTML を使用した最初の試みは効果がないことが判明し、アンチエイリアスにより画像がぼやけてしまいました。ただし、新しい CSS プロパティが解決策として登場しました:

image-rendering: pixelated;
ログイン後にコピー

このプロパティはアンチエイリアスを無効にし、画像に鮮明なピクセル化された外観を与えます。 Chrome、Firefox、さらには IE7 ~ 8 などの最新のブラウザでもうまく機能します。

キャンバス アプローチ

画像レンダリングをサポートしていないブラウザの場合、より複雑なCanvas APIを利用したアプローチも可能です。以下は、ソース画像からピクセルをコピーし、指定した係数で拡大縮小する JavaScript コード スニペットです。

var img = new Image();
img.src = ...;
img.onload = function() {

    // Define scaling factor
    var scale = 8;

    // Create an off-screen canvas to hold the source image
    var src_canvas = document.createElement('canvas');
    src_canvas.width = this.width;
    src_canvas.height = this.height;

    // Draw the source image to the off-screen canvas
    var src_ctx = src_canvas.getContext('2d');
    src_ctx.drawImage(this, 0, 0);

    // Get pixel data from the source canvas
    var src_data = src_ctx.getImageData(0, 0, this.width, this.height).data;

    // Create an on-screen canvas to display the scaled image
    var dst_canvas = document.getElementById('canvas');
    dst_canvas.width = this.width * scale;
    dst_canvas.height = this.height * scale;
    var dst_ctx = dst_canvas.getContext('2d');

    // Copy pixels from the source canvas to the on-screen canvas while scaling
    var offset = 0;
    for (var y = 0; y < this.height; ++y) {
        for (var x = 0; x < this.width; ++x) {
            var r = src_data[offset++];
            var g = src_data[offset++];
            var b = src_data[offset++];
            var a = src_data[offset++] / 100.0;
            dst_ctx.fillStyle = 'rgba(' + [r, g, b, a].join(',') + ')';
            dst_ctx.fillRect(x * scale, y * scale, scale, scale);
        }
    }
};
ログイン後にコピー

このメソッドは、ピクセルに合わせた完璧な拡大縮小を提供し、画像の元の鮮明なエッジを保持します。

以上がブラウザでアンチエイリアシングを行わずに画像を引き伸ばすにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!