javascript - canvas壓縮圖片的原理是什么
問(wèn)題描述
canvas中的toDataURL方法可指定圖片壓縮后的格式及壓縮質(zhì)量,例如壓縮成webp格式:
canvas.toDataURL(’image/webp’,quality);
toDataURL是用base64對(duì)圖像進(jìn)行編碼的,且編碼后的源文件比編碼前大33%,參考地址,但是quality參數(shù)可以指定壓縮質(zhì)量,壓縮質(zhì)量越接近于0,圖片壓縮力度越大。
問(wèn)題1:采用base64編碼將圖片源文件變大了,那base64能壓縮圖片嗎?問(wèn)題2:用base64編碼小圖片只是為了減少http請(qǐng)求嗎?問(wèn)題3:canvas中的toDataURL方法壓縮圖片的原理是什么?quality參數(shù)具體做了什么?問(wèn)題解答
回答1:base64只是對(duì)圖片對(duì)應(yīng)的二進(jìn)制碼,按照六位對(duì)應(yīng)一個(gè)字符規(guī)則做轉(zhuǎn)換,轉(zhuǎn)碼后是反而比原圖片文件大的。但是對(duì)于小圖片而言,經(jīng)轉(zhuǎn)換后多出來(lái)的字節(jié)傳輸遠(yuǎn)比多建立一個(gè)http連接開銷小,所以會(huì)利用base64對(duì)小圖轉(zhuǎn)碼來(lái)提高頁(yè)面加載速度。至于圖片壓縮原理,簡(jiǎn)單來(lái)說(shuō),通過(guò)算法減少一張圖片上的顏色差異,犧牲圖片畫質(zhì)。比如緊挨著的顏色相近的四個(gè)像素的顏色信息壓縮前大概占16個(gè)字節(jié),壓縮后變成一個(gè)顏色就能減少近4倍。quality用來(lái)控制色差的力度,值越小力度越大,顏色相差較大的兩個(gè)像素也會(huì)被處理,自然被壓縮后文件就越小,畫質(zhì)就越爛
回答2:不行
是
控制圖片編碼格式的質(zhì)量,例如webp可以進(jìn)行有損壓縮,質(zhì)量越高,損失越小,文件體積就越大
相關(guān)文章:
1. mysql建表報(bào)錯(cuò),查手冊(cè)看不懂,求解?2. 致命錯(cuò)誤: Class ’appfacadeTest’ not found3. 老師們php,插入數(shù)據(jù)庫(kù)mysql,都是空的,要怎么解決4. 求大神支招,php怎么操作在一個(gè)html文件的<head>標(biāo)記內(nèi)添加內(nèi)容?5. php點(diǎn)贊一天一次怎么實(shí)現(xiàn)6. 怎么php怎么通過(guò)數(shù)組顯示sql查詢結(jié)果呢,查詢結(jié)果有多條,如圖。7. PHP類屬性聲明?8. sql語(yǔ)句 - 如何在mysql中批量添加用戶?9. phpstady在win10上運(yùn)行10. 在應(yīng)用配置文件 app.php 中找不到’route_check_cache’配置項(xiàng)
