nodejs中使用ffmpeg給圖片添加文字水印

nodejs本身不太擅長處理圖片視頻等計算密集性的功能,所以需要第三方的非nodejs庫或工具來實現(xiàn)此功能。
這里就使用了多媒體處理開源庫ffmpeg,其中的drawtext濾鏡就可以高效的實現(xiàn)圖片添加文字水印功能。drawtext濾鏡詳細文檔在這里可以查看 https://ffmpeg.org/ffmpeg-filters.html#drawtext-1

詳細代碼如下

import execcmd from 'child_process'
import fs from 'fs'
import path from 'path'
import { fileURLToPath } from 'node:url'
import { stderr, stdout } from 'process'
import util from 'util'
const exec = util.promisify(execcmd.exec)
let curDir = fileURLToPath(new URL('./', import.meta.url))
let picFile = "test.jpg"
let processedPicFile = "processedtest.jpg"

var cmdstr = "ffmpeg -i " + picFile
cmdstr += " -vf  \"drawtext=fontfile=./tmp/msyhbd.ttc:fontsize=16:x=(w - 10 - text_w):y=10:fontcolor=white:text='凸然(tr.zhiyakeji.com)':shadowx=4:shadowy=4:alpha=0.5\""
cmdstr += " -y " + processedPicFile
const { stdout, stderr } = await exec(cmdstr)
console.error(stderr)

上面主要是通過nodejs的命令行執(zhí)行工具類import execcmd from 'child_process'來執(zhí)行ffmpeg命令來添加水印。
相關(guān)命令行參數(shù)解釋如下:

  • fontfile=./tmp/msyhbd.ttc
    表示的是字體文件的路徑,msyhbd.ttc文件是從Windows系統(tǒng)目錄下的fonts文件夾中拷貝出來的。本來是沒必要的,但可能使用的版本對c:/Windows/Fonts目錄中的冒號處理有問題,導(dǎo)致始終提示找不到字體,從而文字為中文時會是亂碼。
  • fontsize=16
    字體大小,默認為16。
  • x=(w - 10 - text_w)
    文字的x坐標,上面的表達式意思是水印在右上角,w表示圖片寬度, text_w表示的是文字的寬度
  • y=10
    文字所在的y坐標。
  • fontcolor=white
    文字顏色。
  • text='凸然(tr.zhiyakeji.com)'
    文字內(nèi)容。
  • shadowx=4:shadowy=4
    文字陰影x,y坐標偏移量,陰影默認是黑色的,可以通過shadowcolor來設(shè)置。
  • alpha=0.5
    水印透明度0.0到1.0之間。



    版權(quán)聲明:本文為凸然網(wǎng)站的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
    原文鏈接:nodejs中使用ffmpeg給圖片添加文字水印

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容