基于Python实现网页版去图片右下角水印

Python可以用OpenCV去除图片水印,但如何结合web框架去实现网页版去水印,带着这样的疑问,我搜索研究了一下,发现是完全可以实现的,而且考虑到部署服务器,也是可以实现的,这里就不详细说明了。本文采用Pycharm软件。

基于Flask框架实现网页上传图片,执行效果:

打开网页输入以下网址:127.0.0.1:5000,这是来源于后面代码app.run(host='0.0.0.0', port=5000, debug=True)。

代码解析:

(1)Flask框架搭建

新建qushuiyin.py文件,在该文件下输入以下代码。

from flask import Flask, render_template, request, redirect, url_for, make_response, jsonify
from werkzeug.utils import secure_filename
import os
import cv2
import time
import numpy as np
from PIL import Imagefrom datetime import timedelta# 设置允许的文件格式
ALLOWED_EXTENSIONS = set(['png', 'jpg', 'JPG', 'PNG', 'bmp'])def allowed_file(filename):return '.' in filename and filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONSapp = Flask(__name__)
# 设置静态文件缓存过期时间
app.send_file_max_age_default = timedelta(seconds=1)# @app.route('/upload', methods=['POST', 'GET'])
@app.route('/', methods=['POST', 'GET'])  # 添加路由
def upload():if request.method == 'POST':f = request.files['file']if not (f and allowed_file(f.filename)):return jsonify({"error": 1001, "msg": "请检查上传的图片类型,仅限于png、PNG、jpg、JPG、bmp"})user_input = request.form.get("name")basepath = os.path.dirname(__file__)  # 当前文件所在路径upload_path = os.path.join(basepath, './static/photo', secure_filename(f.filename))  # 注意:没有的文件夹一定要先创建,不然会提示没有该路径f.save(upload_path)return render_template('REpicture_ok.html', val1=time.time())return render_template('REpicture.html')if __name__ == '__main__':# app.debug = Trueapp.run(host='0.0.0.0', port=5000, debug=True)

(2)REpicture_ok.html和Repicture.html搭建

在当前目录下新建Repicture_ok.html和Repicture.html空白文件,输入以下代码。

#REpicture.html
<head><meta charset="UTF-8"><title>图片右下角去水印</title>
</head>
<body><h1>请上传图片文件</h1><form action="" enctype='multipart/form-data' method='POST'><input type="file" name="file" style="margin-top:20px;"/><br><input type="submit" value="去水印" class="button-new" style="margin-top:15px;"/></form>
</body>
</html>
#REpicture_ok.html
<head><meta charset="UTF-8"><title>图片右下角去水印</title>
</head>
<body><h1>请上传图片文件</h1><form action="" enctype='multipart/form-data' method='POST'><input type="file" name="file" style="margin-top:20px;"/><br><input type="submit" value="去水印" class="button-new" style="margin-top:15px;"/></form><img src="{{ url_for('static', filename= './photo/result.jpg',_t=val1) }}" width="400" height="400" alt="你的图片被外星人劫持了~~"/>
</body>
</html>

注意:filename= './photo/result.jpg',路径要描述准确,否则会报错。

(3)实现右下角去水印

在qushuiyin.py里f.save(upload_path)代码后接着输入以下代码:

# 使用Opencv转换一下图片格式和名称img = cv2.imread(upload_path,1)newPath = os.path.join(basepath,'./static/photo','new.jpg')hight, width, depth = img.shape[0:3]# 提取cropped = img[int(hight * 0.8):hight, int(width * 0.5):width]  # 剪裁座标为[y0:y1, x0:x1]cv2.imwrite(newPath, cropped)imgSY = cv2.imread(newPath, 1)# 照片二值化解决,把[200,200,200]-[250,250,250]之外的色调变为0thresh = cv2.inRange(imgSY, np.array([200, 200, 200]), np.array([250, 250, 250]))# 建立样子和规格的构造原素kernel = np.ones((3, 3), np.uint8)# 拓展待修补地区hi_mask = cv2.dilate(thresh, kernel, iterations=10)specular = cv2.inpaint(imgSY, hi_mask, 5, flags=cv2.INPAINT_TELEA)cv2.imwrite(newPath, specular)# 遮盖照片imgSY = Image.open(newPath)img = Image.open(upload_path)img.paste(imgSY, (int(width * 0.5), int(hight * 0.8), width, hight))img.save(upload_path)img=cv2.imread(upload_path)cv2.imwrite(os.path.join(basepath, './static/photo', 'result.jpg'), img)os.remove(os.path.join(basepath,'./static/photo','new.jpg'))os.remove(os.path.join(basepath,'./static/photo', secure_filename(f.filename)))

说明:

1. int(width * 0.5), int(hight * 0.8),两个常数是可以调节的,但要注意前后一致;

2.'./static/photo'注意路径;

3.过程中会产生几个文件,使用os.remove进行删除操作。

总结:

右下角去水印项目已经很成熟了,网上可以找到很多实例,但结合时下服务器的应用还有待开拓,所以本文还有很多拓展空间,留待后面慢慢完善。

基于Python实现网页版去水印之去除图片右下角水印相关推荐

  1. 基于python实现网页版微信API,包含终端版微信及微信机器人

    1.Demo 为了确保能正常运行示例脚本,请安装所需的第三方包. pip install -r requirements.txt 注:下面演示的图片与功能可能不是最新的,具体请看源码.

  2. 转让一套基于 Flash 的网页版棋牌平台

    赖勇浩(http://laiyonghao.com) 转让一套基于 Flash 的网页版棋牌平台,它是我在 2009 年初开发完成的,当时是接了一个外包,所以才起意做这个项目的,后来项目流产了.最近看 ...

  3. 黑科技--- 电影日历/表情搜索/抖音网页版/去水印/网易云游戏平台

    黑科技- 电影日历/表情搜索/抖音网页版/去水印/网易云游戏平台 一.电影日历(https://www.cikeee.com) 这个网站中每天会推荐一部经典的电影,并且可以在线观看.如果不喜欢看推荐的 ...

  4. 照片背景底色更换工具二(python+flask网页版源码及打包)

    照片背景底色更换工具二(python+flask网页版源码及打包) 所有源码 文件结构 static images huaman_src_test.jpg huaman_result_test.png ...

  5. 基于Python pygame简易版斗兽棋小游戏源代码

    基于Python pygame简易版斗兽棋小游戏源代码 游戏规则如下: 胜利条件: 1.吃掉对方全部棋子 2.走入对方兽穴(不可进入自己洞穴) 吃法: 1.象>狮>虎>豹>狼& ...

  6. 照片背景底色更换工具二(python+flask网页版使用演示)

    照片背景底色更换工具二(python+flask网页版) 引言 软件介绍及使用 软件包介绍 部署运行 1,双击启动 2,找到本地计算机的ip地址 3,访问链接 4,在windows server 20 ...

  7. 基于 Python 的横版 2D 动作类小游戏

    基于 Python 的横版 2D 动作类小游戏 游戏代码 游戏代码 游戏整体代码(基于 pygame 模块开发) // An highlighted block import pygame impor ...

  8. 基于JavaWeb的网页版邮箱系统设计与实现

    资源下载地址:https://download.csdn.net/download/sheziqiong/86790177 资源下载地址:https://download.csdn.net/downl ...

  9. python爬虫+网页版微信实时获取消息程序

    项目需求: 目的是24小时爬取各种软件的讯息并且以一种统一的方式集中发送给自己. 实现方法: 利用python的requests库以及wxpy库,前者用来爬取网页,后者用来将爬到的内容发送给自己. 程 ...

最新文章

  1. 第一周:信息系统项目管理基础与立项管理作业视频讲解
  2. ffmpeg 转码_小水谈转码---FFmpeg安装
  3. 玩转u-boot之【初探环境变量env/bootcmd/bootargs】
  4. android中怎么保存checkbox中的checked属性_Vue 精粹:v-model指令在组件中怎么玩
  5. 第2天:汇编语言与Makefile
  6. 病毒侵袭(HDU-2896)
  7. 一分钟带你了解Huawei LiteOS组件开发指南
  8. OCP 11G 051题库解析笔记-总
  9. Compressor 4.6.1 for Mac(视频转码工具)
  10. ORACLE纯SQL实现多行合并一行【转】
  11. hrbust 哈理工oj 2026 势力较量【并查集】
  12. 太阳光轨迹软件_飞时达日照分析软件-FastSUN(日照分析软件)下载 v12.0中文版--pc6下载站...
  13. java移位运算符有哪些_java中有三种移位运算符
  14. MATLAB函数之image、imagesc、imshow的用法
  15. HiveSql 日期格式转换
  16. 笔记——关于每次重启之后,虚拟机网络无网络访问权限的解决方法
  17. 在yandex投放广告的话,需要注册俄罗斯常用的域名吗?
  18. 论文阅读:《Rethinking Pseudo-LiDAR Representation》
  19. ServiceMesh实战-服务网格是什么?
  20. 苹果内存不够怎么办_手机内存清理了还是不够用?不知道这些方法,真是太可惜了...

热门文章

  1. 惠普c7000服务器装系统,C7000刀片系统安装实施.doc
  2. AI 3.0时代,情感计算的颠覆性力量
  3. GPT-4,大增长时代的序幕
  4. opencv 等比例缩放图像(图像尺寸不变)
  5. 视频帧率和显示器刷新率的关系
  6. C++学习(一三四)中文字体名的中英对照
  7. 微信公众号最佳实践 ( 8.7)一站到底
  8. linux系统支持uefi,不支持uefi的老电脑装ubuntu
  9. 超轻量级自动化部署神器Drone配合Gogs安装详细教程(图文教程)
  10. 清理vmware 拖拽缓存