Rumah hujung hadapan web tutorial js js和canvas实现图片预览压缩上传

js和canvas实现图片预览压缩上传

Mar 28, 2018 pm 05:16 PM
canvas javascript pemampatan

本文主要大家分享js和canvas实现图片预览压缩上传的方法,结合实例代码和大家讲解,希望能帮助到大家。

第一步:用户选择需要上传的图片

<input type="file" accept="image/*" type="file"" name="imageFile" onchange="upload()">
Salin selepas log masuk

在选定了图片后 upload 函数将被触发,我们需要在这个函数中,获取到图片的资源,将它压缩并利用canvas绘制出来,若需要上传到服务器,也可以利用ajax或者其他方式上传。

第二步:获取图片资源压缩预览上传

function upload() {
	let file = document.querySelector(&#39;input[type=file]&#39;).files[0]  // 获取选择的文件,这里是图片类型
	let reader = new FileReader()
        reader.readAsDataURL(file) //读取文件并将文件以URL的形式保存在resulr属性中 base64格式
        reader.onload = function(e) { // 文件读取完成时触发 
            let result = e.target.result // base64格式图片地址 
            var image = new Image() image.src = result // 设置image的地址为base64的地址 
            image.onload = function(){ 
                var canvas = document.querySelector("#canvas"); 
                var context = canvas.getContext("2d"); 
                canvas.width = image.width; // 设置canvas的画布宽度为图片宽度 
                canvas.height = image.height; 
                context.drawImage(image, 0, 0, image.width, image.height) // 在canvas上绘制图片 
                let dataUrl = canvas.toDataURL(&#39;image/jpeg&#39;, 0.92) // 0.92为压缩比,可根据需要设置,设置过小会影响图片质量 
                                                                   // dataUrl 为压缩后的图片资源,可将其上传到服务器 
            } 
       }
 }
Salin selepas log masuk

现在我们来比较一下图片是否成功压缩:

原图大小:  
压缩比设置为0.92:
压缩比设置为0.52

乍一看,你是不是觉得很奇怪,为什么设置了缩放比为0.92,图片居然比原图大?其实图片通过base64编码后都会变的比原图大,具体原因可以查阅base64的编码原理。如此看来,我们已经成功压缩了图片!

注意点:canvas在IE9以下不支持;大图片尽量不要使用base64,影响响应速度。

相关推荐:

php向服务器上传文件并实现图片预览

Atas ialah kandungan terperinci js和canvas实现图片预览压缩上传. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China 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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Tetapan kadar mampatan maksimum 7-zip, bagaimana untuk memampatkan 7zip kepada minimum Tetapan kadar mampatan maksimum 7-zip, bagaimana untuk memampatkan 7zip kepada minimum Jun 18, 2024 pm 06:12 PM

Saya mendapati bahawa pakej termampat yang dimuat turun dari laman web muat turun tertentu akan lebih besar daripada pakej termampat asal selepas penyahmampatan Perbezaannya ialah berpuluh-puluh Kb dan berpuluh-puluh Mb jika fail kecil, jika terdapat banyak fail, kos penyimpanan akan meningkat dengan banyak. Saya telah membuat beberapa kajian mengenainya dan boleh belajar daripadanya jika perlu. Tahap mampatan: 9-mampatan melampau Saiz kamus: 256 atau 384, semakin dimampatkan kamus, semakin perlahan perbezaan kadar mampatan lebih besar sebelum 256MB dan tiada perbezaan dalam kadar mampatan selepas 384MB: maksimum 273 Parameter: f=BCJ2, uji dan tambah kadar mampatan parameter akan lebih tinggi

Petua untuk mengurangkan saiz fail rakaman skrin win10 Petua untuk mengurangkan saiz fail rakaman skrin win10 Jan 04, 2024 pm 12:05 PM

Ramai rakan perlu merakam skrin untuk kerja pejabat atau memindahkan fail, tetapi kadangkala masalah fail yang terlalu besar menyebabkan banyak masalah berikut adalah penyelesaian kepada masalah fail yang terlalu besar, mari kita lihat. Apa yang perlu dilakukan jika fail rakaman skrin win10 terlalu besar: 1. Muat turun perisian Format Factory untuk memampatkan fail. Alamat muat turun >> 2. Masukkan halaman utama dan klik pilihan "Video-MP4". 3. Klik "Tambah Fail" pada halaman format penukaran dan pilih fail MP4 untuk dimampatkan. 4. Klik "Konfigurasi Output" pada halaman untuk memampatkan fail mengikut kualiti output. 5. Pilih "Kualiti dan Saiz Rendah" daripada senarai konfigurasi juntai bawah dan klik "OK". 6. Klik "OK" untuk melengkapkan import fail video. 7. Klik "Mula" untuk memulakan penukaran. 8. Selepas selesai, anda boleh

Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Jan 05, 2024 pm 06:08 PM

Tutorial JavaScript: Bagaimana untuk mendapatkan kod status HTTP, contoh kod khusus diperlukan: Dalam pembangunan web, interaksi data dengan pelayan sering terlibat. Apabila berkomunikasi dengan pelayan, kami selalunya perlu mendapatkan kod status HTTP yang dikembalikan untuk menentukan sama ada operasi itu berjaya dan melaksanakan pemprosesan yang sepadan berdasarkan kod status yang berbeza. Artikel ini akan mengajar anda cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan menyediakan beberapa contoh kod praktikal. Menggunakan XMLHttpRequest

Ketahui rangka kerja kanvas dan terangkan rangka kerja kanvas yang biasa digunakan secara terperinci Ketahui rangka kerja kanvas dan terangkan rangka kerja kanvas yang biasa digunakan secara terperinci Jan 17, 2024 am 11:03 AM

Terokai rangka kerja Kanvas: Untuk memahami apakah rangka kerja Kanvas yang biasa digunakan, contoh kod khusus diperlukan Pengenalan: Kanvas ialah API lukisan yang disediakan dalam HTML5, yang melaluinya kita boleh mencapai kesan grafik dan animasi yang kaya. Untuk meningkatkan kecekapan dan kemudahan melukis, banyak pembangun telah membangunkan rangka kerja Kanvas yang berbeza. Artikel ini akan memperkenalkan beberapa rangka kerja Kanvas yang biasa digunakan dan menyediakan contoh kod khusus untuk membantu pembaca memperoleh pemahaman yang lebih mendalam tentang cara menggunakan rangka kerja ini. 1. Rangka kerja EaselJS Ea

Bagaimana untuk memampatkan folder dan menghantarnya dalam wps Bagaimana untuk memampatkan folder dan menghantarnya dalam wps Mar 20, 2024 pm 12:58 PM

Pekerja pejabat menggunakan perisian wps dengan kerap di tempat kerja Kadangkala mereka memasukkan berbilang fail setiap hari dan kemudian menghantarnya kepada ketua atau ke lokasi yang ditetapkan Jadi bagaimana perisian wps memampatkan folder dan membungkusnya untuk dihantar? Langkah operasi ini. Mula-mula, susun fail dan folder yang ingin anda hantar ke dalam folder yang sama. Jika anda mempunyai banyak fail, adalah idea yang baik untuk menamakan setiap fail supaya lebih mudah untuk dikenal pasti semasa menghantar. Langkah kedua, kali ini klik pada folder besar ini dan kemudian klik kanan. Pilih "Tambah ke arkib". Langkah 3: Pada masa ini, perisian akan membantu kami membungkus fail kami secara automatik Pilih "Mampatkan ke XX.zip ini ialah format pembungkusan, dan kemudian klik Mampatkan Sekarang". ,

winrar 64-bit-Bagaimana untuk menyahmampat winrar? winrar 64-bit-Bagaimana untuk menyahmampat winrar? Mar 18, 2024 pm 12:55 PM

WinRAR ialah alat pengurusan fail termampat yang berkuasa yang menyediakan ciri yang kaya dan antara muka yang mudah digunakan. WinRAR versi 64-bit dioptimumkan khas untuk sistem pengendalian 64-bit dan boleh menggunakan sumber dan prestasi sistem dengan lebih baik. Seterusnya, biarkan editor memperkenalkan anda kepada winrar 64-bit dan terangkan cara untuk menyahmampat winrar! 1. Apakah perisian winrar 64-bit WinRAR ialah pengurus pakej termampat yang berkuasa. Perisian ini boleh digunakan untuk menyandarkan data anda, mengurangkan saiz lampiran e-mel, menyahmampat RAR, ZIP dan fail lain yang dimuat turun dari Internet dan mencipta fail baharu dalam format RAR dan ZIP. Versi WINRAR terkini ialah Wi

Gambaran keseluruhan arahan mampatan dan penyahmampatan Centos 7 Gambaran keseluruhan arahan mampatan dan penyahmampatan Centos 7 Dec 31, 2023 pm 09:02 PM

1.Sintaks pemampatan fail zip: zip serta nama fail termampat serta nama fail yang hendak dimampatkan. [root@localhost~]#ziptest.ziptest.txtadding:test.txt(deflated100%)[root@localhost~]#Nombor peratusan bar kemajuan yang muncul selepas ia menunjukkan bahawa ia telah dimampatkan kemudian anda boleh mengesahkannya ll untuk melihat sama ada ia mempunyai pakej fail nama anda. [root@localhost~]#llJumlah penggunaan 820004-rw-------.1rootroot1587 Mac 2216:58anaconda-ks.cfg-rw-r--r--.1ro

Terokai peranan berkuasa dan aplikasi kanvas dalam pembangunan permainan Terokai peranan berkuasa dan aplikasi kanvas dalam pembangunan permainan Jan 17, 2024 am 11:00 AM

Fahami kuasa dan aplikasi kanvas dalam pembangunan permainan Gambaran Keseluruhan: Dengan perkembangan pesat teknologi Internet, permainan web menjadi semakin popular di kalangan pemain. Sebagai bahagian penting dalam pembangunan permainan web, teknologi kanvas telah muncul secara beransur-ansur dalam pembangunan permainan, menunjukkan kuasa dan aplikasinya yang berkuasa. Artikel ini akan memperkenalkan potensi kanvas dalam pembangunan permainan dan menunjukkan aplikasinya melalui contoh kod tertentu. 1. Pengenalan kepada teknologi kanvas Kanvas ialah elemen baharu dalam HTML5, yang membolehkan kami menggunakan

See all articles