我的编程空间,编程开发者的网络收藏夹
学习永远不晚

node.js去水印方法实例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

node.js去水印方法实例分析

一、封装一个函数来识别要解析的类型

// 获取类型
get_type(){
    if(this.url.match(/http[s]?:\/\/v\.douyin\.com\/[^ ]+/) != null){
        console.log("识别到【dy】链接")
        return "dy"
    }
    else if(this.url.match(/http[s]?:\/\/v\.kuaishou.com\/[^ ]+/) != null){
        console.log("识别到【ks】链接")
        return "ks"
    }
    else if(this.url.match(/http[s]?:\/\/xhslink\.com\/[^ ]+/) != null){
        console.log("识别到【xhs】链接")
        return "xhs"
    }
    else{
        console.log("未识别到链接类型,请输入正确的链接")
        return null
    }
}

二、在初始化方法中写入本实例共用的数据

// 初始化方法
constructor() {
    this.token = "Z1QljZOZiT4NTG"  // token
    // 请求地址数组对象
    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 = ''  // 用来存储识别到的类型
}

三、封装一个“万能解析”的方法

// 万能解析
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 => {
        // 校验是否解析成功
        if(resp.data.code != 200 && resp.data.msg != "OK"){
            console.log("解析失败")
        }
        else{
            // 获取到解析后的数据
            const data = resp.data.data
            console.log(data)
            var type = data.type  // 类型:1视频 2图片集
            var title = data.title  // 标题
            var cover_url = data.cover_url  // 封面地址
            var video_url = data.video_url  // 无水印视频地址
            var imgs = data.imgs  // 无水印图片数组
        }
    })
}

废话不多说 直接上完整代码?

const axios = require('axios')
class Parse{
    // 初始化方法
    constructor() {
        this.token = "Z1QljZOZiT4NTG"  // token
        // 请求地址数组对象
        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 = ''  // 用来存储识别到的类型
    }
    // 万能解析
    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 => {
            // 校验是否解析成功
            if(resp.data.code != 200 && resp.data.msg != "OK"){
                console.log("解析失败")
            }
            else{
                // 获取到解析后的数据
                const data = resp.data.data
                console.log(data)
                var type = data.type  // 类型:1视频 2图片集
                var title = data.title  // 标题
                var cover_url = data.cover_url  // 封面地址
                var video_url = data.video_url  // 无水印视频地址
                var imgs = data.imgs  // 无水印图片数组
            }
        })
    }
    // 获取类型
    get_type(){
        if(this.url.match(/http[s]?:\/\/v\.douyin\.com\/[^ ]+/) != null){
            console.log("识别到【dy】链接")
            return "dy"
        }
        else if(this.url.match(/http[s]?:\/\/v\.kuaishou.com\/[^ ]+/) != null){
            console.log("识别到【ks】链接")
            return "ks"
        }
        else if(this.url.match(/http[s]?:\/\/xhslink\.com\/[^ ]+/) != null){
            console.log("识别到【xhs】链接")
            return "xhs"
        }
        else{
            console.log("未识别到链接类型,请输入正确的链接")
            return null
        }
    }
    // 使用正则区分要解析的链接是哪个平台的【dy、ks、xhs】
    run(url){
        // 1、把url保存给实例变量【方便后期使用】
        this.url = url
        // 1、获取类型
        this.type = this.get_type();
        if(!this.type){
            return
        }
        // 2、调用万能解析
        this.parse_video()
    }
}
if(__filename === process.mainModule.filename) {
    // new一个Parse对象
    const p = new Parse()
    // 调用run方法
    p.run("https://v.douyin.com/hoDBW9H")
    p.run("https://v.kuaishou.com/C75B2q")
    p.run("/file/imgs/upload/202305/15/cprjmfonoiu').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;

    // 计算水印宽高缩放比例
    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');
  });
});

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

node.js去水印方法实例分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

node.js去水印方法实例分析

这篇文章主要介绍了node.js去水印方法,结合实例形式分析了node.js基于第三方平台实现去水印的相关交互与操作技巧,需要的朋友可以参考下
2023-05-15

URL去重方法实例分析

这篇文章主要介绍“URL去重方法实例分析”,在日常操作中,相信很多人在URL去重方法实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”URL去重方法实例分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧
2023-06-27

Python去除图片水印实现方法详解

这篇文章主要为大家详细介绍了如何利用Python实现处理图片水印的相关资料,主要是实现图片水印的去除效果,感兴趣的小伙伴可以尝试一下
2023-01-06

xtemplate node.js 的使用方法实例解析

工程下安装XTemplate并使用它的方法实例说明:1.安装xtplnpm install xtpl xtemplate --save2.在views目录添加test.xtpl文件,其内容为this is {{title}}!4.集成到Ex
2022-06-04

Node.js Buffer模块的方法以及示例分析

Node.js Buffer模块的方法以及示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。二进制流是大量的二进制数据的集合。由于通常情况下二进制流的大小挺大的,因此二
2023-06-22

Java的Arrays.sort()方法实例分析

本篇内容主要讲解“Java的Arrays.sort()方法实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java的Arrays.sort()方法实例分析”吧!首先看代码:// Use Q
2023-06-29

thinkphp中add方法实例分析

这篇文章主要介绍了thinkphp中add方法实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇thinkphp中add方法实例分析文章都会有所收获,下面我们一起来看看吧。thinkphp中add()方法的
2023-06-29

Java方法使用实例分析

这篇“Java方法使用实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java方法使用实例分析”文章吧。一、方法的概念
2023-06-30

python实操方法案例分析

本篇内容介绍了“python实操方法案例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!任务1、我的咖啡馆你做主元组coffee_name
2023-06-29

win7安装方法实例分析

今天小编给大家分享一下win7安装方法实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。win7安装教程第一步:在本站选
2023-07-01

NioEventLoop的run方法实例分析

这篇文章主要介绍了NioEventLoop的run方法实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇NioEventLoop的run方法实例分析文章都会有所收获,下面我们一起来看看吧。Netty事件循环
2023-06-29

Java Object类方法实例分析

本文小编为大家详细介绍“Java Object类方法实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java Object类方法实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.equals方法1
2023-06-30

C#中方法重载实例分析

这篇文章主要介绍了C#中方法重载实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#中方法重载实例分析文章都会有所收获,下面我们一起来看看吧。最近在看 C++ 的方法重载,我就在想 C# 中的重载底层是怎
2023-07-02

编程热搜

目录