最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

node.js去水印方法實(shí)例分析

 更新時(shí)間:2023年04月15日 09:17:34   作者:Mebius·  
這篇文章主要介紹了node.js去水印方法,結(jié)合實(shí)例形式分析了node.js基于第三方平臺(tái)實(shí)現(xiàn)去水印的相關(guān)交互與操作技巧,需要的朋友可以參考下

一、封裝一個(gè)函數(shù)來識(shí)別要解析的類型

// 獲取類型
get_type(){
    if(this.url.match(/http[s]?:\/\/v\.douyin\.com\/[^ ]+/) != null){
        console.log("識(shí)別到【dy】鏈接")
        return "dy"
    }
    else if(this.url.match(/http[s]?:\/\/v\.kuaishou.com\/[^ ]+/) != null){
        console.log("識(shí)別到【ks】鏈接")
        return "ks"
    }
    else if(this.url.match(/http[s]?:\/\/xhslink\.com\/[^ ]+/) != null){
        console.log("識(shí)別到【xhs】鏈接")
        return "xhs"
    }
    else{
        console.log("未識(shí)別到鏈接類型,請(qǐng)輸入正確的鏈接")
        return null
    }
}

二、在初始化方法中寫入本實(shí)例共用的數(shù)據(jù)

// 初始化方法
constructor() {
    this.token = "Z1QljZOZiT4NTG"  // token
    // 請(qǐng)求地址數(shù)組對(duì)象
    this.req_urls = {
        dy: "http://api.txapi.cn/v1/parse_short_video/dy",
        ks: "http://api.txapi.cn/v1/parse_short_video/ks",
        xhs: "http://api.txapi.cn/v1/parse_short_video/xhs",
    }
    this.url = ''  // 要解析的地址
    this.type = ''  // 用來存儲(chǔ)識(shí)別到的類型
}

三、封裝一個(gè)“萬能解析”的方法

// 萬能解析
parse_video(){
    axios({
        url: this.req_urls[this.type],
        method: 'POST',
        headers: {
            'Content-Type': "application/x-www-form-urlencoded"
        },
        responseType: 'json',
        data: {
            token: this.token,
            url: this.url
        }
    })
    .then(resp => {
        // 校驗(yàn)是否解析成功
        if(resp.data.code != 200 && resp.data.msg != "OK"){
            console.log("解析失敗")
        }
        else{
            // 獲取到解析后的數(shù)據(jù)
            const data = resp.data.data
            console.log(data)
            var type = data.type  // 類型:1視頻 2圖片集
            var title = data.title  // 標(biāo)題
            var cover_url = data.cover_url  // 封面地址
            var video_url = data.video_url  // 無水印視頻地址
            var imgs = data.imgs  // 無水印圖片數(shù)組
        }
    })
}

廢話不多說 直接上完整代碼??

const axios = require('axios')
class Parse{
    // 初始化方法
    constructor() {
        this.token = "Z1QljZOZiT4NTG"  // token
        // 請(qǐng)求地址數(shù)組對(duì)象
        this.req_urls = {
            dy: "http://api.txapi.cn/v1/parse_short_video/dy",
            ks: "http://api.txapi.cn/v1/parse_short_video/ks",
            xhs: "http://api.txapi.cn/v1/parse_short_video/xhs",
        }
        this.url = ''  // 要解析的地址
        this.type = ''  // 用來存儲(chǔ)識(shí)別到的類型
    }
    // 萬能解析
    parse_video(){
        axios({
            url: this.req_urls[this.type],
            method: 'POST',
            headers: {
                'Content-Type': "application/x-www-form-urlencoded"
            },
            responseType: 'json',
            data: {
                token: this.token,
                url: this.url
            }
        })
        .then(resp => {
            // 校驗(yàn)是否解析成功
            if(resp.data.code != 200 && resp.data.msg != "OK"){
                console.log("解析失敗")
            }
            else{
                // 獲取到解析后的數(shù)據(jù)
                const data = resp.data.data
                console.log(data)
                var type = data.type  // 類型:1視頻 2圖片集
                var title = data.title  // 標(biāo)題
                var cover_url = data.cover_url  // 封面地址
                var video_url = data.video_url  // 無水印視頻地址
                var imgs = data.imgs  // 無水印圖片數(shù)組
            }
        })
    }
    // 獲取類型
    get_type(){
        if(this.url.match(/http[s]?:\/\/v\.douyin\.com\/[^ ]+/) != null){
            console.log("識(shí)別到【dy】鏈接")
            return "dy"
        }
        else if(this.url.match(/http[s]?:\/\/v\.kuaishou.com\/[^ ]+/) != null){
            console.log("識(shí)別到【ks】鏈接")
            return "ks"
        }
        else if(this.url.match(/http[s]?:\/\/xhslink\.com\/[^ ]+/) != null){
            console.log("識(shí)別到【xhs】鏈接")
            return "xhs"
        }
        else{
            console.log("未識(shí)別到鏈接類型,請(qǐng)輸入正確的鏈接")
            return null
        }
    }
    // 使用正則區(qū)分要解析的鏈接是哪個(gè)平臺(tái)的【dy、ks、xhs】
    run(url){
        // 1、把url保存給實(shí)例變量【方便后期使用】
        this.url = url
        // 1、獲取類型
        this.type = this.get_type();
        if(!this.type){
            return
        }
        // 2、調(diào)用萬能解析
        this.parse_video()
    }
}
if(__filename === process.mainModule.filename) {
    // new一個(gè)Parse對(duì)象
    const p = new Parse()
    // 調(diào)用run方法
    p.run("https://v.douyin.com/hoDBW9H")
    p.run("https://v.kuaishou.com/C75B2q")
    p.run("http://xhslink.com/fKihbj")
}

補(bǔ)充:除了使用axios網(wǎng)絡(luò)請(qǐng)求第三方平臺(tái)交互之外,還可以使用第三方庫來實(shí)現(xiàn)去水印功能,例如使用jimp庫,實(shí)例代碼如下:

const Jimp = require('jimp');

// 讀取原圖
Jimp.read('source.png').then(image => {
  // 讀取水印圖
  Jimp.read('watermark.png').then(watermark => {
    // 獲取原圖和水印圖的寬高
    const width = image.bitmap.width;
    const height = image.bitmap.height;
    const wmWidth = watermark.bitmap.width;
    const wmHeight = watermark.bitmap.height;

    // 計(jì)算水印寬高縮放比例
    const scale = width / wmWidth;

    // 縮放水印圖
    watermark.scale(scale);

    // 將水印圖繪制到原圖上
    image.composite(watermark, 0, 0, {
      mode: Jimp.BLEND_SOURCE_OVER,
      opacitySource: 1,
      opacityDest: 1
    });

    // 保存處理后的圖片
    image.write('result.png');
  });
});

相關(guān)文章

  • 在Node.js中將SVG圖像轉(zhuǎn)換為PNG,JPEG,TIFF,WEBP和HEIF格式的方法

    在Node.js中將SVG圖像轉(zhuǎn)換為PNG,JPEG,TIFF,WEBP和HEIF格式的方法

    這篇文章主要介紹了在Node.js中將SVG圖像轉(zhuǎn)換為PNG,JPEG,TIFF,WEBP和HEIF格式的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Node.js操作系統(tǒng)OS模塊用法分析

    Node.js操作系統(tǒng)OS模塊用法分析

    這篇文章主要介紹了Node.js操作系統(tǒng)OS模塊用法,結(jié)合實(shí)例形式分析了nodejs OS模塊常見函數(shù)功能及簡(jiǎn)單使用技巧,需要的朋友可以參考下
    2019-01-01
  • Node.js中讀取TXT文件內(nèi)容fs.readFile()用法

    Node.js中讀取TXT文件內(nèi)容fs.readFile()用法

    在本篇文章中我們給大家分享一下Node.js中讀取TXT文件內(nèi)容以及fs.readFile()的用法,需要的朋友們可以參考下。
    2018-10-10
  • 關(guān)于nodejs和npm版本不匹配的解決方法

    關(guān)于nodejs和npm版本不匹配的解決方法

    在運(yùn)行npm命令時(shí)總會(huì)出現(xiàn)如下報(bào)錯(cuò),npm?dose?not?support?Node.js v12.18.0,發(fā)現(xiàn)是node版本和npm版本不匹配造成的,所以本文給大家介紹了關(guān)于nodejs和npm版本不匹配的解決方法,需要的朋友可以參考下
    2023-11-11
  • Node.js readline 逐行讀取、寫入文件內(nèi)容的示例

    Node.js readline 逐行讀取、寫入文件內(nèi)容的示例

    本篇文章主要介紹了Node.js readline逐行讀取、寫入文件內(nèi)容的示例,運(yùn)用readline逐行讀取的兩種實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • nodejs?express實(shí)現(xiàn)中間件

    nodejs?express實(shí)現(xiàn)中間件

    這篇文章主要為大家介紹了nodejs?express實(shí)現(xiàn)中間件實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • nodeJS?express路由學(xué)習(xí)req.body與req.query方法實(shí)例詳解

    nodeJS?express路由學(xué)習(xí)req.body與req.query方法實(shí)例詳解

    這篇文章主要為大家介紹了nodeJS?express路由學(xué)習(xí)req.body與req.query方法實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • NodeJS如何實(shí)現(xiàn)同步的方法示例

    NodeJS如何實(shí)現(xiàn)同步的方法示例

    nodeJS最大的特點(diǎn)就是其異步操作,下面這篇文章主要給大家介紹了關(guān)于NodeJS如何實(shí)現(xiàn)同步的方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • Node.js的Express框架使用上手指南

    Node.js的Express框架使用上手指南

    這篇文章主要介紹了Node.js的Express框架使用上手指南,Express可以說是目前Node世界中人氣最高的開發(fā)框架,需要的朋友可以參考下
    2016-03-03
  • Egret引擎開發(fā)指南之視覺編程

    Egret引擎開發(fā)指南之視覺編程

    本部分內(nèi)容詳細(xì)介紹了Egret中關(guān)于視覺編程顯示對(duì)象的架構(gòu)設(shè)計(jì)以及一些概念,希望對(duì)大家能有所幫助
    2014-09-09

最新評(píng)論

永顺县| 孝昌县| 龙海市| 英德市| 邮箱| 长治县| 施秉县| 南木林县| 南雄市| 左贡县| 金堂县| 周口市| 洪江市| 高邮市| 外汇| 绥棱县| 城固县| 城口县| 天全县| 从化市| 富阳市| 化德县| 竹北市| 越西县| 玛多县| 察隅县| 简阳市| 扬州市| 平安县| 天台县| 台湾省| 河东区| 盐边县| 手游| 正安县| 门源| 西乌珠穆沁旗| 抚州市| 永城市| 开封市| 深泽县|