Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
作者:傅佑 发布时间:2023-08-13 04:27:16
标签:Python,图片,水印
(一)功能实现效果:
选择文件的效果:
标记预加水印的位置:
(二)Python代码:
# -*l- coding:utf-8 *
import os, io, sys, re, time, json
from pandas import array
import matplotlib.backends.backend_tkagg
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
#from matplotlib.pyplot import imshow, ginput
from PIL import Image, ImageEnhance, ImageFilter
import wx
import numpy as np
import random
class DirDialog(wx.Frame):
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, None, -1, u"文件夹选择对话框")
b = wx.Button(self, -1, u"请选择图片")
self.Bind(wx.EVT_BUTTON, self.OnButton, b)
def OnButton(self, event):
# file_wildcard = "Paint files(*.paint)|*.paint|All files(*.*)|*.*"
dlg = wx.FileDialog(self, u"选择文件夹", style=wx.DD_DEFAULT_STYLE)
if dlg.ShowModal() == wx.ID_OK:
jpegname = dlg.GetPath() # 文件夹路径
print(jpegname)
np.savez('dir.npz', k_a=str(jpegname))
dlg.Destroy()
def sealmark(img_seal, img_new):
try:
data_a = np.load('dir.npz')#保存地址数据
img_source = str(data_a['k_a']) # 原图片的地址
im1 = Image.open(img_source)
plt.imshow(im1)
xy = plt.ginput(1)
xo = xy[0][0]
yo = xy[0][1]
ks = im1.size[1] * 0.000478
wm = Image.open(img_seal)
wm = wm.resize((int(wm.width * ks), int(wm.height * ks))) # wm.with * k=280 * ks
layer = Image.new('RGBA', im1.size, (0, 0, 0, 0))
layer.paste(wm, (int(xo), int(yo)))
newIm = Image.composite(layer, im1, layer)
newIm.save(img_new)
print(img_seal)
except Exception as e:
print(">>>>>>>>>>> sealMark EXCEPTION: " + str(e))
return False
else:
return True
if __name__ == '__main__':
frame = wx.App()
app = DirDialog()
app.Show()
frame.MainLoop()
sealmark("水印\水印" + str(random.randrange(10)) + ".png", "after_seal.jpg") #random.randrange(10):随机在水印库中挑选一张PN * 印图片
(三)Python打包成exe程序:
在终端里输入pyinstaller -F -w add_seal.py
C:\Users\Administrator\Desktop\seal>pyinstaller -F -w add_seal.py
(1)出现以下的打包成功信息:
(2)\dist\文件夹出现exe文件:
(3)把exe文件放在主工作区文件夹,并双击运行。
(4)成功!
(5)PS:给EXE文件加图标。
1、找一个ICO格式的图标文件:“redseal.ico”,放在项目文件夹内。
2、加redseal.ico,进行打包exe。
pyinstaller -F -w -i redseal.ico add_seal.py
3、移动exe的位置,就会出现图标。
来源:https://blog.csdn.net/weixin_43756157/article/details/114254403
0
投稿
猜你喜欢
- 决策树之ID3算法及其Python实现,具体内容如下主要内容决策树背景知识决策树一般构建过程ID3算法分裂属性的选择ID3算法流程及其优缺点
- 一个事务是一个连续的一组数据库操作,就好像它是一个单一的工作单元进行。换言之,永远不会是完整的事务,除非该组内的每个单独的操作是成功的。如果
- 同步数据库:使用上述两条命令同步数据库1.认识migrations目录:migrations目录作用:用来存放通过makemigration
- 需求:给定一个数组和一个正整数,要求把数组分割成多个正整数大小的数组,如果不够分,则最后一个数组分到剩余的所有元素。示例1:数组:[1, 2
- 本文研究的主要是python实现Adapter模式的相关内容,具体实现代码如下。Adapter模式有两种实现方式一种是类方式。#理解 #就是
- 把程序重新写了一遍,日期下拉选择器,可自定义日期范围。使用了一个技巧获取指定月份的天数。演示页面:DateSelector.htm 程序代码
- 一、前言前几天在Python最强王者群有个叫【dcpeng】的粉丝问了一个关于Pandas中的问题,这里拿出来给大家分享下,一起学习。想问一
- 本文实例讲述了js文本框输入内容智能提示效果代码。分享给大家供大家参考。具体如下:运行效果截图如下:大体思路:1.监听文本框事件。这里是用的
- 映射类型 — dict字典可用多种方式来创建:使用花括号内以逗号分隔键: 值对的方式: {‘jack
- python中的导入关键字:import 以及from import1、import import一般用于导入包以及模块。不过有
- Nodejs 连接 mysql时报Error: Cannot enqueue Query after fatal error错误的处理办法一
- 元组(Tuple)元组是有序且不可更改的集合。在 Python 中,元组是用圆括号编写的。实例创建元组:thistuple = ("
- 需求描述:在公司老旧系统里,数据库表很多,但是在设计之初并没有建立好关系图,导致新人刚入职,面对N个库,每个库几百张表,很不方便。例如:公司
- 本文实例讲述了php遍历CSV类。分享给大家供大家参考。具体如下:<?phpclass CSVIterator implements
- sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。关于这个项目的详细介绍请看:
- 本文实例讲述了Python实现的银行系统模拟程序。分享给大家供大家参考,具体如下:银行系统模拟程序1、概述使用面向对象思想模拟一个简单的银行
- 点击vue路由跳转,控制台报错:Avoided redundant navigation to current location: &
- VS Code是微软开源的一款编辑器,插件系统十分的丰富。本文就介绍了如何使用VS Code搭建Go语言开发环境。VS Code配置Go语言
- 前几篇文章介绍了用源码的方式来调试锁相关的信息,这里同样用这个工具来解决一个线上实际的死锁案例,也是我们介绍的第一个两条 SQL 就造成死锁
- 如果我们想对一个表的每一行做出比较复杂的操作,大多会想到用游标,本文中,我们将换一种思路,用SQL Server 2005中的新函数ROW_