Bagaimana untuk Mencapai Imej Bersaiz Licin dengan Kanvas HTML?

Susan Sarandon
Lepaskan: 2024-10-22 22:04:03
asal
437 orang telah melayarinya

How to Achieve Smooth Resized Images with HTML Canvas?

Melicinkan Imej dengan Kanvas

Mengubah saiz imej dengan kanvas HTML ialah tugas biasa, tetapi untuk mencapai kelancaran boleh menjadi satu cabaran. Walaupun perisian penyuntingan imej seperti Photoshop menawarkan pelbagai algoritma interpolasi seperti bicubic dan bilinear, tidak jelas sama ada kanvas menyokong pilihan ini.

<code class="js">var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
canvas.width = 300;
canvas.height = 234;
ctx.drawImage(img, 0, 0, 300, 234);
document.body.appendChild(canvas);</code>
Salin selepas log masuk

Coretan kod di atas mengubah saiz imej menggunakan kanvas, tetapi imej yang diubah saiznya kurang lancar.

Untuk menangani perkara ini, konsep turun tangga boleh digunakan. Penyemak imbas biasanya menggunakan interpolasi linear untuk mengubah saiz, yang boleh mengakibatkan pengalianan. Dengan memecahkan proses penskalaan ke bawah kepada beberapa langkah, seseorang boleh mencapai hasil yang lebih dekat dengan interpolasi dwikubik.

Pertimbangkan kod yang diubah suai berikut:

<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 = "//i.imgur.com/SHo6Fub.jpg";</code>
Salin selepas log masuk

Kod ini melakukan berbilang langkah pensaizan semula berturut-turut, secara beransur-ansur mengurangkan saiz imej dan menggunakan interpolasi. Hasilnya ialah imej dengan tepi yang lebih licin dan kualiti visual yang dipertingkatkan.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Imej Bersaiz Licin dengan Kanvas HTML?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!