【蓝桥杯Web组题解2】图片水印生成

图片水印生成

介绍

很多网站都会通过给图片添加水印的形式来标记图片来源,维护版权。前端生成水印通常是通过 canvas 实现,但实际上我们也可以直接利用 CSS 来实现图片水印,这样做会有更好的浏览器兼容性。

本题中你将封装一个创建文字水印的函数。

目标

请完善 js/index.js 文件中的 TODO 部分,实现创建水印函数的功能 ,创建的水印需要使用 <span> 标签展示。

  • createWatermark 函数参数说明
参数说明类型
text文字内容string
color颜色值string
deg旋转角度number
opacity透明度number
count水印数量number

完成后的效果如下:
在这里插入图片描述

/**
 * 创建一个文字水印的div
 * @param  {string} text - 水印文字
 * @param  {string} color - 水印颜色
 * @param  {number} deg - 水印旋转角度
 * @param  {number} opacity - 水印透明度
 * @param  {number} count - 水印数量
 */
function createWatermark(text, color, deg, opacity, count) {
  // 创建水印容器
  const container = document.createElement("div");
  container.className = "watermark";
  // TODO: 根据输入参数创建文字水印
  for (let i = 0; i < count; i++) {
    const item = document.createElement("span");
    item.innerText = text;
    item.style.color = color;
    item.style.opacity = opacity;
    item.style.transform = `rotate(${deg}deg)`;
    container.appendChild(item);
  }
  return container;
}

// 以下代码不需要修改
// 调用createWatermark方法,创建图片水印
const watermark = createWatermark("WaterMark", "white", 45, 0.5, 11);
// 将水印挂载到图片容器上
const container = document.querySelector(".container");
container.appendChild(watermark);

// 提供图片保存功能
const button = document.querySelector("button");
button.addEventListener("click", () => {
  domtoimage.toJpeg(document.querySelector(".container")).then((dataUrl) => {
    const link = document.createElement("a");
    link.download = "image.jpeg";
    link.href = dataUrl;
    link.click();
  });
});

或者改为:

  container.innerHTML+=`<span style="color:${color};transform: rotate(${deg}deg); opacity:${opacity}">${text}</span>`
  }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jerry_前端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值