上班摸鱼期间写了一个水印生成器`esay-watermark.js`

1,030 阅读2分钟

前言

hello大家好我是Jimmy,我搞了个小玩具,期待和大家一起交流进步。

废话少说,先看东西:

esay-watermark是一个基于canvas的简单的生成自定义水印的插件,轻量、灵活、配置简单是它的特点。

avatar

avatar

源码:esay-watermark 地址:gitee.com/jimmyxuexue…

事情是这样的

上周我还是按照日常的习惯上班刷着掘金,突然看到一篇文章介绍前端生成水印的方式,这个立马就提起了我的兴趣,因为如果我在开发中遇到这种情况,不用说第一时间肯定是百度现成的库,但是自己又有造轮子的心,想着干脆就自己造个轮子吧~

我的收获

这个库是用碎片的时间写下来的,虽然代码并不多,但是其实真正花费了四五天的时间,收获还是很大的,主要是通过这个库让我收获了:

  • webpack工程化有了更深入的了解

    这点很重要,知道了一个库的源码应该怎么通过webpack配置,怎么做一些简单的性能优化。

  • 对TS的使用更加得心应手了。

  • 知道了如何将自己的库上传至npm,以供他人使用

  • 了解了canvas一些过去所没有接触过的API,如:获取文字的宽高尺寸。

实现原理

这个水印功能的实现是基于canvas来进行绘制的,也就是说文字其实是我们通过canvas来画上去,因为我们可以自定义文字的尺寸,方位,颜色,等等,最后通过将canvas转成一张base64格式的内容输出,就实现了这个水印的功能。

期待您的加入

这个库虽然是个玩具,但是如果有没有动手写过的同学来说,加入我一起完善它还是会有收获的。它也还有很多可以完善的地方,如:

  • 现在只能支持一次绘制一个文字,将来可以绘制多个相同的文字
  • 现在的文字也只能水平,水印最好的效果是倾斜的效果。
  • 现在只能支持绝对的uri地址,并不支持相对路径的地址。
  • ......

总之还是有很多的进步空间,希望有小伙伴能够一起加入进来,一起学习,一起进步。

致谢

感谢您观看到这里。希望有机会能和您一起交流心得。

Gitee

个人空间

\