摘要:圖片壓縮的原理大同小異,這里直接引用官方文檔的原話基本原理是通過渲染圖片,再通過方法壓縮保存為字符串能夠編譯為格式的圖片。這個過程我自己手擼過,代碼很多,更不用提有各種的兼容性坑,所以最后權衡再三還是直接換成了這個插件。
慣例,先貼傳送門:https://github.com/think2011/localResizeIMG
首先說到,為嘛要壓縮圖片,這需求一般出現在需要上傳照片(尤其是移動端)的情況下,現在手機拍出來的照片隨隨便便就是好幾兆,無論3/4G還WIFI要上傳都很吃力,而且實際上也用不著這么大呀,一般壓縮到個一百幾十k就夠用了。因此,我們需要在用戶選好照片(可能是從相冊中選擇也可能是直接拍攝,看我博客的另一篇文章:html5 api:device"s media capture mechanism(設備的媒體捕捉機制)——利用input:file調用設備的照相機/相冊、攝像機、錄音機)后,先用js把照片壓縮好了,再上傳到服務器進行進一步的處理。
js圖片壓縮的原理大同小異,這里直接引用localResizeIMG官方文檔的原話:
基本原理是通過canvas渲染圖片,再通過 toDataURL 方法壓縮保存為base64字符串(能夠編譯為jpg格式的圖片)。
這個過程我自己手擼過,代碼很多,更不用提有各種的兼容性坑,所以最后權衡再三還是直接換成了這個插件。
這插件用起來很簡單(廢話,用起來不簡單還用來干嘛),傳入照片(可以是file對象也可以直接傳圖片路徑),設置好自己想要的分辨率(其實也就是width不超過多少px、heighti不超過多少px),然后再設置個圖片質量,然后就是promise風格的callback了,直接把壓縮后照片的base64傳進callback里做參數,最后就是拿著這base64愛干嘛干嘛去。另外,作者還很貼心的把照片base64編碼的長度也傳參進來了,方便后端校驗圖片是否上傳完整。
具體用法就不貼了,自己傳送門去看唄,這里放個示例:
function upload () { lrz(this.files[0]) .then(function (rst) { // 處理成功會執行 }) .catch(function (err) { // 處理失敗會執行 }) .always(function () { // 不管是成功失敗,都會執行 }); });
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/91567.html
摘要:圖片文件大小減小后,上傳速度自然會提升,在同樣的并發下,后臺處理的速度也會得到提升,用戶體驗得到提升。 這是一個很簡單的方案。嗯,是真的。 為什么要這么做? 在移動Web蓬勃發展的今天,有太多太多的應用需要讓用戶在移動Web上傳圖片文件了,正因如此,我們有些困難必須去攻克: 低網速下上傳進度緩慢,用戶體驗差 高并發下,后臺處理較大的上傳文件壓力大 或許有更多... 在攻克上面的一些...
摘要:彈出層是一個輕量級的庫用于管理工具提示和彈窗效果。一個帶有的跨瀏覽器富文本編輯器。由制作,適用于每天寫作的富文本編輯器。輕量的操作庫。是一個快速簡單輕量級的瀏覽器功能檢測庫。它沒有任何的依賴,并且壓縮后僅有。極小跨平臺的全屏插件。 在這里維持一個持續更新的地方 圖片 baguetteBox.js - 是一個簡單易用的響應式圖像燈箱效果腳本。demo Lightgallery.js -...
摘要:彈出層是一個輕量級的庫用于管理工具提示和彈窗效果。一個帶有的跨瀏覽器富文本編輯器。由制作,適用于每天寫作的富文本編輯器。輕量的操作庫。是一個快速簡單輕量級的瀏覽器功能檢測庫。它沒有任何的依賴,并且壓縮后僅有。極小跨平臺的全屏插件。 在這里維持一個持續更新的地方 圖片 baguetteBox.js - 是一個簡單易用的響應式圖像燈箱效果腳本。demo Lightgallery.js -...
閱讀 1849·2023-04-26 01:58
閱讀 1982·2019-08-30 11:26
閱讀 2730·2019-08-29 12:51
閱讀 3495·2019-08-29 11:11
閱讀 1183·2019-08-26 11:54
閱讀 2096·2019-08-26 11:48
閱讀 3478·2019-08-26 10:23
閱讀 2384·2019-08-23 18:30