使用PIL为图片添加水印
使用pillow库为图片添加文件或者图片水印
下面是我们想要添加水印的图片:
图片水印:
效果图如下:
ps:对图片添加字体时,需指定字体文件,如 simsun.ttc
windows中在 C:\Windows\Fonts 路径下
linux中在 /usr/share/fonts 路径下,若不存在时需先去下载,linux中字体文件默认没有中文字体(最简单的方法,大家可以将windows中的字体文件复制到linux上的字体文件路径下)。
代码如下:
from PIL import Image, ImageFont, ImageDraw
import os
def image_add_watermark(image_path="", logo_path=""):
# 读取上传的图片
# image_file = request.files
# image_name = image_file.filename
# image = Image.open(io.BytesIO(image_file.read()))
image = Image.open(image_path)
image_name = 'xx.png'
# 降低像素
image = image.convert('RGBA').resize((image.width, image.height), Image.ANTIALIAS)
# 可以指定图片的保存路径
image_path = os.path.join('image_file', image_name)
image.save(image_path)
# 添加文字水印
add_watermark(image_path, '长情不羁的五年', 'simsun.ttc', font_size=150)
# 添加图片水印
# add_watermark_logo(image_path, logo_path)
print('执行完成》》》》》》》》》》》》')
def add_watermark(image_path, text, font_path, font_size=40, fill=(255, 255, 255, 128)):
"""
在图片上添加水印
:param image_path: 图片路径
:param text: 水印文本
:param font_path: 字体文件路径
:param font_size: 字体大小,默认为 40
:param fill: 水印颜色,默认为白色半透明
:return: None
"""
with Image.open(image_path) as image:
draw = ImageDraw.Draw(image)
width, height = image.size
font = ImageFont.truetype(font_path, font_size)
text_width, text_height = draw.textsize(text, font=font)
x = int((width - text_width) / 2)
y = int((height - text_height) / 2)
draw.text((x, y), text, font=font, fill=fill)
image.save(image_path)
def add_watermark_logo(image_path, logo_path):
"""
在图片上添加水印
:param image_path: 图片路径
:param logo_path: 水印路径
:return: None
"""
with Image.open(image_path) as image:
watermark = Image.open(logo_path).convert("RGBA").resize((image.width // 2, image.height // 3)) # 指定图片的大小
image.paste(watermark, (0, 0), watermark) # 添加的水印相对于图片的位置(x, y), 基于图片左上角
image.show()
image.save(image_path)
image_add_watermark('mm.jpg', 'logo.png')
使用PIL为图片添加水印的更多相关文章
- 【Python】给图片添加水印的Python及Golang实现
前言 不知道大家有没有这样的习惯,一篇比较得意的博客在发表一段时间之后会特别关注,前段时间一篇写到凌晨的博客被 码迷 这个网关爬取之后发表了,因为搜索引擎先爬取码迷的,所以我的博客无法被搜索到,即使直 ...
- Python Windows 快捷键自动给剪贴板(复制)图片添加水印
编写一个能在windows上使用的按下快捷键自动给剪贴板(复制)的图片添加水印的小工具.plyer.PIL.pyinstaller.pynput.win32clipboard库.记录自己踩过的坑,部分 ...
- Android 图片添加水印图片或者文字
给图片添加水印的基本思路都是载入原图,添加文字或者载入水印图片,保存图片这三个部分 添加水印图片: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...
- java实现给图片添加水印
package michael.io.image; import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.aw ...
- java.imageIo给图片添加水印
最近项目在做一个商城项目, 项目上的图片要添加水印①,添加图片水印;②:添加文字水印; 一下提供下个方法,希望大家可以用得着: package com.blogs.image; import java ...
- ASP.NET -- WebForm -- 给图片添加水印标记
ASP.NET -- WebForm: 给图片添加水印标记 ASP.NET:使用 WebForm(C#) 制作一个简单的为图片添加水印的页面. 1. Test2.aspx文件 <%@ Page ...
- python base64 编解码,转换成Opencv,PIL.Image图片格式
二进制打开图片文件,base64编解码,转成Opencv格式: # coding: utf-8 import base64 import numpy as np import cv2 img_file ...
- JAVA给图片添加水印
package com.test; import org.junit.Test; import javax.imageio.ImageIO; import java.awt.*; import jav ...
- .net为图片添加水印(转) jpg png和gif格式
.net为图片添加水印(转) jpg png和gif格式 .net为图片添加水印(转) jpg png和gif格式,转自csdn的hyde82,现在跟大家一起来分享下: 利 用.net中System. ...
- iOS边练边学--(Quartz2D)图片添加水印
一.给图片添加水印的基本步骤 加载图片 手动创建位图上下文 绘制原生的图片 给原生的图片添加文字 生成一张图片给我们,从上下文中获取图片 关闭上下文 二.注意:位图上下文的获取方式跟layer上下文不 ...
随机推荐
- 啊哈C语言案例学习笔记
Hello World #include<stdio.h> /* 技术要点: 初学者在编写程序时,经常会忘记在语句后边添加分号, */ int main() { printf(" ...
- docker快速启动proxy_pool项目
docker快速启动proxy_pool项目 项目地址:https://github.com/jhao104/proxy_pool 0x01 搭建redis 该项目是基于redis的,所以我们首先需要 ...
- doo 13 之11 :开发之看板视图和用户端 QWeb
QWeb 是 Odoo 使用的模板引擎,它基于 XML 来生成 HTML 片断和页面.通过 QWeb可生成内容丰富的看板(Kankan)视图.报表和 CMS 网页.本文中我们将学习QWeb 语法以及如 ...
- Pycharm激活码,Pycharm稳定专属激活码(持续更新)
分享一下 PyCharm 2023.1.2 最新激活注册码,破解教程如下,可免费永久激活,亲测有效,下面是详细文档哦~ 申明:本教程 PyCharm 激活码收集于网络,请勿商用,仅供个人学习使用,如有 ...
- 玩转服务器之网站篇:新手使用WordPress搭建博客和静态网站部署
静态网站部署和WordPress搭建博客都是网站运营中常见的工作.静态网站是一种不需要服务器端脚本的网站形式,通常使用HTML.CSS和JavaScript等静态资源进行构建和显示.而WordPres ...
- 通过命令行创建ACFS文件系统
其实使用asmca图形创建ACFS文件系统既简单又不容易出错,但是考虑到某些客户场景不允许我们调取图形,所以本文演示下通过命令行创建ACFS文件系统的步骤. 可以通过MOS搜索到下面这篇文档: ASM ...
- SQL后半部和JDBC
SQL后半部 排序order by asc 升序desc 降序select *from 表名 order by 列名 asc ; select *from 表名 order by 列名 asc , 列 ...
- shell编程-提取IP地址
1.使用cut文本处理工具提取 [root@hadoop129 scripts]# ifconfig ens33 | grep netmask | cut -d " " -f 10 ...
- 快速把PDF文档里的表格粘贴到excel的方法
1 打开需要复制的PDf文件,点一下页面上方的"选择文本"按钮(如下图中手图标左边的箭头),以便选中文本 2 ctrl c 需要复制的表格,到excel中ctrl v.这时候所有类 ...
- 深入理解Go语言接口
1. 引言 接口是一种定义了软件组件之间交互规范的重要概念,其促进了代码的解耦.模块化和可扩展性,提供了多态性和抽象的能力,简化了依赖管理和替换,方便进行单元测试和集成测试.这些特性使得接口成为构建可 ...