0

0

html中怎么添加图片水印效果 watermark制作

裘德小鎮的故事

裘德小鎮的故事

发布时间:2025-06-28 13:47:02

|

734人浏览过

|

来源于php中文网

原创

在 html 中添加图片水印的核心方法包括使用 css 背景图片和 canvas 绘图。1. css 方案适合静态水印,通过 background-image、background-repeat、background-position 和 background-size 属性控制,适用于对样式要求不高的场景;2. canvas 方案更灵活,支持动态绘制图片或文字水印,并可通过 javascript 控制水印的位置、大小、透明度等;3. 适配不同屏幕时,css 可借助 background-size 和媒体查询,canvas 则通过动态计算尺寸实现响应式布局;4. 添加文字水印需设置字体、颜色并使用 filltext 或 stroketext 方法;5. 防止用户移除水印的方法包括多重水印、不规则位置、内容融合、服务器端生成及将 canvas 转换为 data url 等策略。

html中怎么添加图片水印效果 watermark制作

在 HTML 中添加图片水印效果,核心在于利用 CSS 的背景图片和定位属性,或者使用 Canvas 动态生成带有水印的图片。Canvas 方案更灵活,但稍微复杂一些。

html中怎么添加图片水印效果 watermark制作

解决方案

CSS 背景图片方案:

html中怎么添加图片水印效果 watermark制作

这种方案简单直接,适合对水印位置和样式要求不高的场景。

立即学习前端免费学习笔记(深入)”;

html中怎么添加图片水印效果 watermark制作
  1. 准备水印图片: 创建一个透明背景的水印图片(PNG 格式最佳)。
  2. CSS 样式: 将水印图片设置为目标元素的背景图片,并调整 background-repeatbackground-positionbackground-size 属性。
<div class="watermarked-image">
  <img src="your-image.jpg" alt="需要添加水印的图片">
</div>

<style>
.watermarked-image {
  position: relative; /* 确保定位上下文 */
}

.watermarked-image img {
  display: block; /* 移除图片下方的额外空间 */
}

.watermarked-image::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-image: url('watermark.png'); /* 替换为你的水印图片 */
  background-repeat: repeat; /* 或 no-repeat,根据需要调整 */
  background-position: center; /* 调整水印位置 */
  background-size: 100px; /* 调整水印大小 */
  opacity: 0.5; /* 调整水印透明度 */
  pointer-events: none; /* 防止水印遮挡下方元素 */
}
</style>

Canvas 方案:

Magic AI Avatars
Magic AI Avatars

神奇的AI头像,获得200多个由AI制作的自定义头像。

下载

Canvas 方案更强大,可以动态生成水印,支持文字水印、图片水印,以及更复杂的水印布局。

  1. 创建 Canvas 元素: 在 HTML 中添加一个 Canvas 元素。
  2. JavaScript 代码: 使用 JavaScript 获取 Canvas 上下文,加载原始图片和水印图片,然后将它们绘制到 Canvas 上。
<canvas id="watermarkCanvas" width="800" height="600"></canvas>

<script>
  const canvas = document.getElementById('watermarkCanvas');
  const ctx = canvas.getContext('2d');

  const image = new Image();
  image.src = 'your-image.jpg'; // 替换为你的原始图片

  const watermark = new Image();
  watermark.src = 'watermark.png'; // 替换为你的水印图片

  image.onload = () => {
    canvas.width = image.width;
    canvas.height = image.height;
    ctx.drawImage(image, 0, 0);

    watermark.onload = () => {
      // 绘制水印,可以多次绘制实现重复水印
      for (let i = 0; i < 5; i++) {
        for (let j = 0; j < 5; j++) {
          ctx.globalAlpha = 0.3; // 设置透明度
          ctx.drawImage(watermark, i * 150, j * 100, 100, 50); // 调整水印位置和大小
          ctx.globalAlpha = 1.0; // 恢复透明度
        }
      }
    };
  };
</script>

如何处理水印图片在不同屏幕尺寸下的适配问题?

CSS 背景图片方案可以通过 background-sizecovercontain 属性进行简单的适配。更复杂的适配,例如在不同断点下使用不同大小的水印图片,需要媒体查询。

Canvas 方案则可以通过 JavaScript 动态计算水印的位置和大小,根据屏幕尺寸进行调整。 例如,获取屏幕宽度,然后按比例缩放水印大小和间距。

  const screenWidth = window.innerWidth;
  const watermarkSize = screenWidth * 0.1; // 水印大小为屏幕宽度的 10%
  const watermarkSpacingX = screenWidth * 0.2; // 水平间距
  const watermarkSpacingY = screenWidth * 0.15; // 垂直间距

  watermark.onload = () => {
    for (let i = 0; i < 5; i++) {
      for (let j = 0; j < 5; j++) {
        ctx.globalAlpha = 0.3;
        ctx.drawImage(watermark, i * watermarkSpacingX, j * watermarkSpacingY, watermarkSize, watermarkSize * 0.5);
        ctx.globalAlpha = 1.0;
      }
    }
  };

如何添加文字水印,而不是图片水印?

Canvas 方案非常适合添加文字水印。

  1. 设置字体样式: 使用 ctx.font 设置字体、大小和样式。
  2. 设置文本颜色: 使用 ctx.fillStyle 设置文本颜色。
  3. 绘制文本: 使用 ctx.fillText()ctx.strokeText() 绘制文本。
  image.onload = () => {
    canvas.width = image.width;
    canvas.height = image.height;
    ctx.drawImage(image, 0, 0);

    ctx.font = '30px Arial'; // 设置字体
    ctx.fillStyle = 'rgba(255, 0, 0, 0.5)'; // 设置颜色和透明度
    ctx.textAlign = 'center'; // 设置文本对齐方式
    ctx.fillText('Watermark Text', canvas.width / 2, canvas.height / 2); // 绘制文本
  };

如何防止用户轻易移除水印?

完全防止移除水印几乎是不可能的,但可以增加移除难度。

  1. 多重水印: 在图片上添加多个水印,增加移除成本。
  2. 不规则水印位置: 避免将水印放在图片边缘,放置在内容区域。
  3. 水印与内容融合: 设计水印时,使其与图片内容有一定的融合,增加移除后的痕迹。
  4. 服务器端水印: 在服务器端生成水印图片,避免客户端操作。 这需要后端配合,前端只负责展示。
  5. 使用 Canvas 生成 Data URL: 将带有水印的 Canvas 内容转换为 Data URL,这样用户下载的图片就是带有水印的图片,无法直接获取原始图片。
  image.onload = () => {
    // ... (绘制水印)

    const dataURL = canvas.toDataURL('image/jpeg', 0.8); // 转换为 Data URL,可以设置图片质量
    // 可以将 dataURL 赋值给 img 标签的 src 属性,或者下载
    // 例如: document.getElementById('downloadLink').href = dataURL;
  };

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
CSS position定位有几种方式
CSS position定位有几种方式

有4种,分别是静态定位、相对定位、绝对定位和固定定位。更多关于CSS position定位有几种方式的内容,可以访问下面的文章。

83

2023.11.23

html5动画制作有哪些制作方法
html5动画制作有哪些制作方法

html5动画制作方法有使用CSS3动画、使用JavaScript动画库、使用HTML5 Canvas等。想了解更多html5动画制作方法相关内容,可以阅读本专题下面的文章。

550

2023.10.23

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

38

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

83

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

97

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

223

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

458

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

169

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP水印与缩略图最新视频教程
PHP水印与缩略图最新视频教程

共10课时 | 1.8万人学习

PHP开发水印与缩略图教程
PHP开发水印与缩略图教程

共10课时 | 4.3万人学习

Sass 教程
Sass 教程

共14课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号