ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript Canvas で画像のサイズ変更をスムーズに行うにはどうすればよいですか?

JavaScript Canvas で画像のサイズ変更をスムーズに行うにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-22 22:10:031010ブラウズ

How to Achieve Smooth Image Resizing with JavaScript Canvas?

JavaScript Canvas を使用したスムーズな画像サイズ変更

Canvas を使用して画像のサイズを変更する場合、滑らかさに関する問題がよく発生します。 Photoshop などのソフトウェアや、バイキュービックやバイリニアなどのアルゴリズムを採用するブラウザとは異なり、キャンバスにはスムージング機能が組み込まれていません。

スムーズなサイズ変更を実現するには、ダウンステップを使用できます。通常、ブラウザは画像のサイズ変更中に線形補間を使用しますが、ダウンステップでは双線形補間を使用して、より洗練された結果を生成します。プロセスを複数のステップに分割することで、バイキュービック結果を近似できます。

次のコード スニペットを考えてみましょう:

<code class="js">var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var img = new Image();

img.onload = function () {

    // set size proportional to image
    canvas.height = canvas.width * (img.height / img.width);

    // step 1 - resize to 50%
    var oc = document.createElement('canvas'),
        octx = oc.getContext('2d');

    oc.width = img.width * 0.5;
    oc.height = img.height * 0.5;
    octx.drawImage(img, 0, 0, oc.width, oc.height);

    // step 2
    octx.drawImage(oc, 0, 0, oc.width * 0.5, oc.height * 0.5);

    // step 3, resize to final size
    ctx.drawImage(oc, 0, 0, oc.width * 0.5, oc.height * 0.5,
    0, 0, canvas.width, canvas.height);
}
img.src = "image.jpg";</code>

最初のステップでは、画像が元の 50% に縮小されます。サイズ。 2 番目のステップでは、中間イメージが再度縮小され、最終的には 25% 縮小されます。最後に、3 番目のステップでは、画像を希望のサイズに調整します。

ダウンスケーリング プロセスを複数回繰り返すことで、よりスムーズなバイキュービック補間手法を効率的に近似できます。このアプローチにより、Canvas は、ソフトウェア プログラムやブラウザーで見られる品質に近い滑らかさで画像のサイズを変更できるようになります。

以上がJavaScript Canvas で画像のサイズ変更をスムーズに行うにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。