Rumah > hujung hadapan web > Tutorial H5 > Muat naik mampatan imej pada pelayar html5 kanvas mudah alih_html5 kemahiran tutorial

Muat naik mampatan imej pada pelayar html5 kanvas mudah alih_html5 kemahiran tutorial

WBOY
Lepaskan: 2016-05-16 15:45:33
asal
2240 orang telah melayarinya

Apabila mereka bentuk fungsi muat naik avatar pada terminal mudah alih baru-baru ini, ia pada asalnya dimuat naik terus melalui formData dengan Walau bagaimanapun, penggunaan sebenar ialah: untuk gambar yang terlalu besar (foto yang diambil oleh telefon bimbit piksel tinggi) dsb.) Masa muat naik yang terlalu lama akan menyebabkan muat naik gagal, dan memuat naik saiz asal imej setiap kali (mampatan pemprosesan latar belakang) akan sangat mempengaruhi pengalaman pengguna, jadi saya mengkaji kaedah memampatkan imej melalui kanvas dan memuat naiknya Berikut adalah beberapa idea dan Pemikiran:

1. Kesukaran di sini ialah: disebabkan oleh mekanisme perlindungan penyemak imbas, laluan imej fail tempatan tidak boleh diperoleh secara langsung, jadi imej tempatan perlu disusun ke dalam format base64 dan kemudian dimuat naik , kodnya adalah seperti berikut:

Kod JavaScriptSalin kandungan ke papan keratan
  1. var hasil = document.getElementById("/* Blok paparan mesej ralat */"); 🎜>
  2. var input = document.getElementById("/* Muat naik teg fail */"); >
  3. jika(jenis FileReader === 'undefined'){ result.innerHTML =
  4. "

    Maaf, penyemak imbas anda tidak menyokong FileReader

    "; input.setAttribute(
  5. 'dilumpuhkan'
  6. ,'dilumpuhkan'); }lain
  7. {
  8. input.addEventListener('ubah'
  9. ,bacaFail,
  10. salah); }
  11. fungsi
  12. bacaFail(){
  13. var fail =
  14. ini
  15. fail[0] jika(!/image/w /.test(file.type)){
  16. makluman("Sila pastikan fail daripada jenis imej");
  17. kembali
  18. palsu
  19. ; } var
  20. pembaca =
  21. baharu
  22. FileReader(
  23. pembaca.readAsDataURL(fail); reader.onload = fungsi(e){
  24. // this.result Pengekodan imej yang disusun boleh dipaparkan terus dengan src
  25. }
  26. }
  27. 2. Pemprosesan imej dalam kanvas
  28. Kod JavaScript
  29. Salin kandungan ke papan keratan
  1. var c=document.getElementById("/* Id teg kanvas */"); >
  2. var cct=c.getContext("2d");
  3. var
  4. img=baharu Imej(); img.src=/* Mendapat alamat pengekodan imej */
  5. ;
  6. var
  7. lebar = img.width
  8. var
  9. tinggi = img.height
  10. dic = tinggi / lebar; c.width = 200;
  11. //Standard untuk pemampatan imej, di sini dikira berdasarkan deposit 200px
  12. c.tinggi = 200 * dic; cxt.clearRect(0,0,200,200*dic); cxt.drawImage(img,0,0,200,200*dic)
  13. var
  14. finalURL = c.toDataURL();
  15. // URL akhir yang diperolehi ialah pengekodan imej termampat, yang boleh digunakan untuk memuat naik atau terus menjana teg img
  16. Beberapa perkara yang perlu diperhatikan di sini ialah: 1. Akan berlaku ralat semasa menyahpepijat secara setempat Sebabnya ialah masalah merentas domain dan perlu dinyahpepijat di bahagian pelayan
  17. 2. Kaedah drawImage() dalam kanvas mempunyai fungsi pemangkasan imej, tetapi jika regangan dan pemangkasan imej ditulis pada masa yang sama, kaedah pemangkasan akan dilaksanakan dahulu
  18. 3. Apabila menggunakan AJAX untuk memuat naik pengekodan imej, tanda tambah dalam pengekodan akan ditukar menjadi ruang, menyebabkan kompilasi latar belakang gagal; 4. Kaedah memilih dan memuat naik kawasan imej masih dalam peringkat percubaan, dan saya akan menambah pengalaman saya nanti. Di atas adalah keseluruhan kandungan artikel ini, saya harap ia akan membantu kajian semua orang. Teks asal:
  19. http://www.cnblogs.com/liaojh/p/5209433.html
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan