成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

nodejs 全自動(dòng)使用 Tinypng (免費(fèi)版,無需任何配置)壓縮圖片

BigTomato / 1696人閱讀

摘要:前端一直比較喜歡壓縮圖片,但是每次都要用手拖來拖去,很累最近不忙了,擼了一段行的代碼,一個(gè)命令全自動(dòng)壓縮文件夾包含子文件夾里所有大小小于的和圖片,親測成功,再次感謝。

前端一直比較喜歡tinypng壓縮圖片,但是每次都要用手拖來拖去,很累.
最近不忙了,node擼了一段100行的代碼,一個(gè)命令全自動(dòng)壓縮文件夾(包含子文件夾)里所有大小小于5MBjpgpng圖片,親測成功,再次感謝tinypng。

大體思路:

遞歸獲取本地文件夾里的文件

過濾文件,格式必須是.jpg .png,大小小于5MB.(文件夾遞歸)

每次只處理一個(gè)文件(可以繞過20個(gè)的數(shù)量限制)

處理返回?cái)?shù)據(jù)拿到遠(yuǎn)程優(yōu)化圖片地址

取回圖片更新本地圖片

純node實(shí)現(xiàn)不依賴任何其他代碼片段

上代碼:

const fs = require("fs");
const path = require("path");
const https = require("https");
const crypto = require("crypto");
const { URL } = require("url");

const root = "./",
  exts = [".jpg", ".png"],
  max = 5200000; // 5MB == 5242848.754299136

const options = {
  method: "POST",
  hostname: "tinypng.com",
  path: "/web/shrink",
  headers: {
    rejectUnauthorized: false,
    "Postman-Token": Date.now(),
    "Cache-Control": "no-cache",
    "Content-Type": "application/x-www-form-urlencoded",
    "User-Agent":
      "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"
  }
};

fileList(root);

// 獲取文件列表
function fileList(folder) {
  fs.readdir(folder, (err, files) => {
    if (err) console.error(err);
    files.forEach(file => {
      fileFilter(folder + file);
    });
  });
}

// 過濾文件格式,返回所有jpg,png圖片
function fileFilter(file) {
  fs.stat(file, (err, stats) => {
    if (err) return console.error(err);
    if (
      // 必須是文件,小于5MB,后綴 jpg||png
      stats.size <= max &&
      stats.isFile() &&
      exts.includes(path.extname(file))
    ) {
      fileUpload(file); // console.log("可以壓縮:" + file);
    }
    if (stats.isDirectory()) fileList(file + "/");
  });
}
// 異步API,壓縮圖片
// {"error":"Bad request","message":"Request is invalid"}
// {"input": { "size": 887, "type": "image/png" },"output": { "size": 785, "type": "image/png", "width": 81, "height": 81, "ratio": 0.885, "url": "https://tinypng.com/web/output/7aztz90nq5p9545zch8gjzqg5ubdatd6" }}
function fileUpload(img) {
  var req = https.request(options, function(res) {
    res.on("data", buf => {
      let obj = JSON.parse(buf.toString());
      if (obj.error) {
        console.log(`[${img}]:壓縮失??!報(bào)錯(cuò):${obj.message}`);
      } else {
        fileUpdate(img, obj);
      }
    });
  });

  req.write(fs.readFileSync(img), "binary");
  req.on("error", e => {
    console.error(e);
  });
  req.end();
}
// 該方法被循環(huán)調(diào)用,請求圖片數(shù)據(jù)
function fileUpdate(imgpath, obj) {
  let options = new URL(obj.output.url);
  let req = https.request(options, res => {
    let body = "";
    res.setEncoding("binary");
    res.on("data", function(data) {
      body += data;
    });

    res.on("end", function() {
      fs.writeFile(imgpath, body, "binary", err => {
        if (err) return console.error(err);
        console.log(
          `[${imgpath}] 
 壓縮成功,原始大小-${obj.input.size},壓縮大小-${
            obj.output.size
          },優(yōu)化比例-${obj.output.ratio}`
        );
      });
    });
  });
  req.on("error", e => {
    console.error(e);
  });
  req.end();
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/95897.html

相關(guān)文章

  • 非常實(shí)用的在線工具網(wǎng)站清單

    摘要:文章目錄在線圖片壓縮在線壓縮最好用的切圖工具在線工具一鍵摳圖免費(fèi)字體免費(fèi)素材圖片和視頻中國風(fēng)配色網(wǎng)站免費(fèi)壁紙免費(fèi)短連接在線在線代碼編輯在線流程圖思維導(dǎo)圖在線圖片壓縮傳送門在線圖片壓縮網(wǎng)站已經(jīng)優(yōu)化超過十億張圖片,支持,,等格式的圖片的壓縮。 ...

    XanaHopper 評論0 收藏0
  • tinypng upload一鍵壓縮上傳工具

    摘要:關(guān)于這是一個(gè)基于的圖片壓縮上傳工具,壓縮過程主要通過調(diào)用提供的完成。因?yàn)槭亲烂娑?,所以很方便我們將圖片拖拽到任務(wù)托盤進(jìn)行壓縮上傳,極大地提升了前端的工作效率,可以讓我們更專注于業(yè)務(wù)開發(fā)。 地址 項(xiàng)目地址:tinypng-upload 有興趣的可以玩一玩,因?yàn)槠綍r(shí)經(jīng)常會(huì)用到圖片壓縮,上傳,如果你也覺得很繁瑣的話,這個(gè)將會(huì)解決你的痛點(diǎn)。 關(guān)于 tinypng-upload 這是一個(gè)基于 e...

    hlcc 評論0 收藏0
  • 開箱即用-簡潔實(shí)用的ImgURL圖床相冊程序和Zdir目錄列表程序(文件管理器)

    摘要:本篇文章就來分享一下兩款開箱即用上手容易的圖床相冊程序和在線文件管理器目錄列表程序,由好友開發(fā)并維護(hù),非常適合個(gè)人站長用作圖床相冊和文件下載分享。雖然說現(xiàn)在照片還有文件存儲(chǔ)等都可以上傳到網(wǎng)盤中,但是國內(nèi)的網(wǎng)盤與國外的網(wǎng)盤存儲(chǔ)還有點(diǎn)不一樣。以百度網(wǎng)盤與Dropbox對比為例,百度網(wǎng)盤頂多算是一個(gè)個(gè)人用來存放私人照片和文件的網(wǎng)絡(luò)硬盤,如果用來分享的話很容易被百度限制或者取消下載。很多的個(gè)人站長為...

    番茄西紅柿 評論0 收藏2637
  • 【長期更新】盤一盤那些 uTools 高質(zhì)量插件,讓你的工作效率瞬間提升N倍!

    摘要:參考增強(qiáng)神器,文檔搜索效率何止翻倍推薦系數(shù)圖片展示快速獲取文件文件夾名稱插件來源開發(fā)者插件介紹如名,鼠標(biāo)選中文件或者文件夾,點(diǎn)擊鼠標(biāo)中鍵激活插件即可將文件文件夾名稱復(fù)制到剪切板。 ...

    remcarpediem 評論0 收藏0
  • 移動(dòng)端H5頁面注意事項(xiàng)

    摘要:移動(dòng)端活動(dòng)頁面常常需要能夠分享到各種社交中,常用的有微信等。微信二維碼問題同一個(gè)頁面里要是有兩個(gè)二維碼,長按掃描總是只能掃出左側(cè)第一個(gè)二維碼。 首發(fā)于簡書博客:http://www.jianshu.com/p/e958... 2017-11-25 更新:5. 使用 Gulp 拼合圖片 1. 單個(gè)頁面內(nèi)容不能過多 設(shè)計(jì)常用尺寸:750 x 1334 / 640 x 1134,包含了手機(jī)頂...

    weknow619 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<