如何使用 watermark-image-ts

61 阅读1分钟

图片生成水印

如何使用 watermark-image-ts,作者用的纯ts写的代码 开源易懂好修改

下载安装

  npm install watermark-image-ts --save

使用案例

  • html
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>example</title>
    <script src="../dist/main.js"></script>
</head>

<body>
    <div>
        添加水印
    </div>
    <div onclick="down()">
        下载
    </div>
    <canvas id="canvas"></canvas>
</body>
<script>
    const obj = new Watermark(document.querySelector('#canvas'))
    function down(){
        console.log(obj)
        obj.downFile();   
    }
    obj.draw({
        img: './demo.png',
        text: "123",
        margin: 40,
        style: {
            rotate: -30,
            fillStyle:"rgba(0,0,0,.05)"
        }
    })
</script>

</html>
  • React
import { useEffect, useRef } from "react";
import "./App.css";
import demo from "./assets/demo.jpeg";
import Watermark from "watermark-image-ts";
function App() {
  const ref = useRef<any>({
    watermark: "",
  });
  const canvasRef = useRef<HTMLCanvasElement>(null);
  useEffect(() => {
    console.log(Watermark);
    ref.current.watermark = new Watermark(canvasRef.current!);
    ref.current.watermark.draw({
      img: demo,
      text: "demo--demo",
      margin: 40,
      style: {
        rotate: -30,
        fillStyle: "rgba(0,0,0,.05)",
      },
    });
  }, []);
  const down = () => {
    console.log("下载");
    ref.current.watermark.downFile();
  };
  return (
    <div className="App">
      <div
        onClick={() => {
          down();
        }}
      >
        下载
      </div>
      <canvas ref={canvasRef}></canvas>
      <img src={demo} />
    </div>
  );
}

export default App;

draw方法

属性类型是否必填作用
imgstring(base64|图片dom|网络地址(需要允许跨越))
textstring水印文案
marginnumber间距
style样式样式

style

属性类型是否必填作用
rotatenumber旋转角度
fillStylestring字体样式

Demo online

codesandbox.io/p/sandbox/e…