中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

鞏義網(wǎng)站建設(shè)托管seo詞庫(kù)排行

鞏義網(wǎng)站建設(shè)托管,seo詞庫(kù)排行,東莞網(wǎng)絡(luò)營(yíng)銷(xiāo)班,歐米茄手表官方網(wǎng)前端可以使用canvas和File API來(lái)對(duì)圖片進(jìn)行壓縮和縮放處理,以下是一個(gè)示例代碼 : 壓縮方法compressImg這段代碼是實(shí)現(xiàn)對(duì)圖片進(jìn)行上傳前的壓縮功能 1. 定義了一個(gè)壓縮圖片的函數(shù) compressImg,接受兩個(gè)參數(shù):file表示要壓縮的文件,q…

前端可以使用canvas和File?API來(lái)對(duì)圖片進(jìn)行壓縮和縮放處理,以下是一個(gè)示例代碼 :

  • 壓縮方法compressImg這段代碼是實(shí)現(xiàn)對(duì)圖片進(jìn)行上傳前的壓縮功能

1. 定義了一個(gè)壓縮圖片的函數(shù) `compressImg`,接受兩個(gè)參數(shù):`file`表示要壓縮的文件,`quality`表示壓縮的質(zhì)量,取值范圍為0~1之間。

2. 創(chuàng)建了一個(gè) Promise 對(duì)象,將壓縮后的圖片信息作為 Promise 的返回值。

3. 創(chuàng)建了一個(gè) FileReader 對(duì)象 `reader`,用于讀取文件數(shù)據(jù)。

4. 通過(guò) `reader.onload` 事件回調(diào)函數(shù),當(dāng)文件加載完成后觸發(fā)。

5. 在回調(diào)函數(shù)中,創(chuàng)建了一個(gè) Image 對(duì)象 `image`,用于加載圖片。

6. 使用 `image.onload` 事件回調(diào)函數(shù),在圖片加載完成后觸發(fā)。

7. 在 `image.onload` 回調(diào)函數(shù)中,創(chuàng)建了一個(gè) Canvas 對(duì)象 `canvas`,用于繪制圖像。

8. 根據(jù)給定的最大寬高,通過(guò)計(jì)算縮放后的寬高,將圖片等比例縮放到合適的尺寸,設(shè)置了 `canvas` 的寬度和高度,并使用 `drawImage` 方法將原圖繪制在 `canvas` 上。

9. 使用 `canvas.toDataURL()` 將 `canvas` 中的圖像轉(zhuǎn)換為 base64 編碼的DataURL格式的圖像數(shù)據(jù),并指定圖片格式為 `image/jpeg`,質(zhì)量為 `quality`。

10. 將 base64 編碼的數(shù)據(jù)URL 轉(zhuǎn)為二進(jìn)制數(shù)據(jù),并創(chuàng)建一個(gè) Uint8Array 對(duì)象 `bufferArray`。

11. 使用循環(huán)將 base64 編碼的數(shù)據(jù)填充到 `bufferArray` 中。

12. 創(chuàng)建一個(gè)新的 File 對(duì)象 `miniFile`,將 `bufferArray` 作為文件內(nèi)容,文件名與原文件一致,文件類(lèi)型為 `image/jpeg`。

13. 將壓縮前后的圖片信息以對(duì)象的形式返回,并調(diào)用 `resolve` 方法將該對(duì)象作為 Promise 的結(jié)果。

  • 壓縮方法compressImg的調(diào)用

1. 通過(guò)監(jiān)聽(tīng)文件選擇框的change事件,在文件選擇后將選擇的圖片文件傳入compressImg函數(shù)中進(jìn)行處理

14. 在成功的回調(diào)中創(chuàng)建一個(gè)新的img對(duì)象,并將newFile.afterSrc賦給其src屬性,這樣就能在頁(yè)面上顯示壓縮后的圖像。此時(shí)對(duì)壓縮后的newFile上傳即可。

<!DOCTYPE html>
<html><head><title>Image Compression Demo</title><style>#output {margin-top: 20px;}</style></head><body><input type="file" id="input" accept="image/*" /><div id="output"></div><script>/*** 壓縮方法* @param {string} file 文件* @param {Number} quality  0~1之間,quality與文件大小成正比*/function compressImg(file, quality) {return new Promise((resolve) => {// 創(chuàng)建 FileReaderconst reader = new FileReader();reader.onload = ({ target: { result: src } }) => {// 創(chuàng)建 img 元素const image = new Image();image.onload = async () => {// 計(jì)算縮放后的寬高var maxWidth = 500;var maxHeight = 500;var width = image.width;var height = image.height;if (width > height) {if (width > maxWidth) {height *= maxWidth / width;width = maxWidth;}} else {if (height > maxHeight) {width *= maxHeight / height;height = maxHeight;}}// 創(chuàng)建 canvas 元素const canvas = document.createElement("canvas");// 設(shè)置canvas的寬高canvas.width = width;canvas.height = height;// 繪制縮放后的canvas圖像canvas.getContext("2d").drawImage(image, 0, 0, width, height);// 將canvas轉(zhuǎn)換為DataURL格式的圖像const canvasURL = canvas.toDataURL(`image/jpeg`, quality);//atob() 對(duì)經(jīng)過(guò) base-64 編碼的字符串進(jìn)行解碼const buffer = atob(canvasURL.split(",")[1]);let length = buffer.length;// ArrayBuffer 對(duì)象用來(lái)表示通用的、固定長(zhǎng)度的原始二進(jìn)制數(shù)據(jù)緩沖區(qū)// Uint8Array 數(shù)組類(lèi)型表示一個(gè) 8 位無(wú)符號(hào)整型數(shù)組,創(chuàng)建時(shí)內(nèi)容被初始化為 0。創(chuàng)建完后,可以以對(duì)象的方式或使用數(shù)組下標(biāo)索引的方式引用數(shù)組中的元素。const bufferArray = new Uint8Array(new ArrayBuffer(length));while (length--) {bufferArray[length] = buffer.charCodeAt(length);}const miniFile = new File([bufferArray], file.name, {type: "image/jpeg",});resolve({file: miniFile,origin: file,beforeSrc: src,afterSrc: canvasURL,beforeKB: Number((file.size / 1024).toFixed(2)),afterKB: Number((miniFile.size / 1024).toFixed(2)),});};image.src = src;};reader.readAsDataURL(file);});}var input = document.getElementById("input");input.addEventListener("change", function (event) {var file = event.target.files[0];compressImg(file, 0.5).then((newFile) => {console.log("newFile", newFile); // 將新的newFile上傳即可var newImg = new Image(); // 創(chuàng)建新的圖像對(duì)象newImg.src = newFile.afterSrc;// 在頁(yè)面上顯示縮放后的圖像var output = document.getElementById("output");output.innerHTML = "";output.appendChild(newImg);});});</script></body>
</html>

http://www.risenshineclean.com/news/5458.html

相關(guān)文章:

  • vs 2008網(wǎng)站做安裝包怎么找推廣渠道
  • 日本做受視頻網(wǎng)站鄭州百度推廣開(kāi)戶
  • 哪個(gè)網(wǎng)站可以領(lǐng)單做效果圖制作一個(gè)app軟件需要多少錢(qián)
  • 北京創(chuàng)意網(wǎng)站建設(shè)搜索引擎關(guān)鍵詞怎么優(yōu)化
  • 網(wǎng)站訪問(wèn)代理在線南寧推廣軟件
  • 在58同城做網(wǎng)站怎么樣哪個(gè)杭州seo好
  • pc網(wǎng)站自動(dòng)跳轉(zhuǎn)wap內(nèi)蒙古網(wǎng)站seo
  • 門(mén)戶網(wǎng)站建設(shè)工作方案蘭州疫情最新情況
  • 做五金批發(fā)的適合在哪些網(wǎng)站杭州seo薪資水平
  • 上海專(zhuān)業(yè)網(wǎng)站建設(shè)公司電話商丘網(wǎng)站seo
  • 抽獎(jiǎng)的網(wǎng)站怎么做廣告網(wǎng)站留電話
  • 溫州本地網(wǎng)站鄭州網(wǎng)站推廣排名公司
  • 深圳建筑企業(yè)排名線下課程seo
  • wordpress旅游公司主題百度seo營(yíng)銷(xiāo)推廣
  • 我想帶貨怎么找貨源青島優(yōu)化網(wǎng)站關(guān)鍵詞
  • 網(wǎng)站建設(shè)網(wǎng)頁(yè)設(shè)計(jì)案例汕頭網(wǎng)站建設(shè)開(kāi)發(fā)
  • 幫朋友做網(wǎng)站志鴻優(yōu)化設(shè)計(jì)答案網(wǎng)
  • 做emc的有哪些網(wǎng)站阿里指數(shù)查詢
  • 網(wǎng)站如何做3d產(chǎn)品百度賬號(hào)登陸
  • wordpress 小說(shuō)主題結(jié)構(gòu)優(yōu)化
  • 中國(guó)招標(biāo)信息網(wǎng)惠州seo推廣優(yōu)化
  • python 網(wǎng)站開(kāi)發(fā)小項(xiàng)目怎樣制作網(wǎng)站
  • 電子商務(wù)主要學(xué)什么就業(yè)工資seo是什么工作內(nèi)容
  • 網(wǎng)站開(kāi)發(fā)與服務(wù)合同范本建立網(wǎng)站平臺(tái)
  • 長(zhǎng)沙門(mén)戶網(wǎng)站地推拉新app推廣平臺(tái)有哪些
  • 山東淄博網(wǎng)站建設(shè)公司百度推廣客戶端教程
  • 河北seo技術(shù)東莞百度seo
  • 黃巖做網(wǎng)站的公司搜索引擎優(yōu)化策略有哪些
  • 赤壁網(wǎng)站開(kāi)發(fā)珠海網(wǎng)站seo
  • 阜陽(yáng)訊拓網(wǎng)站建設(shè)公司廣州優(yōu)化疫情防控措施