Python实现图片指定位置加图片水印(附Pyinstaller打包exe)


Posted in Python onMarch 04, 2021

(一)功能实现效果:

选择文件的效果:

Python实现图片指定位置加图片水印(附Pyinstaller打包exe)

Python实现图片指定位置加图片水印(附Pyinstaller打包exe)

标记预加水印的位置:

Python实现图片指定位置加图片水印(附Pyinstaller打包exe)

Python实现图片指定位置加图片水印(附Pyinstaller打包exe)

(二)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):随机在水印库中挑选一张PNG水印图片

(三)Python打包成exe程序:

在终端里输入pyinstaller -F -w add_seal.py

C:\Users\Administrator\Desktop\seal>pyinstaller -F -w add_seal.py

(1)出现以下的打包成功信息:

Python实现图片指定位置加图片水印(附Pyinstaller打包exe)

Python实现图片指定位置加图片水印(附Pyinstaller打包exe)

(2)\dist\文件夹出现exe文件:

Python实现图片指定位置加图片水印(附Pyinstaller打包exe)

(3)把exe文件放在主工作区文件夹,并双击运行。

Python实现图片指定位置加图片水印(附Pyinstaller打包exe)

Python实现图片指定位置加图片水印(附Pyinstaller打包exe)

(4)成功!

(5)PS:给EXE文件加图标。

1、找一个ICO格式的图标文件:“redseal.ico”,放在项目文件夹内。

Python实现图片指定位置加图片水印(附Pyinstaller打包exe)

2、加redseal.ico,进行打包exe。

pyinstaller -F -w -i redseal.ico add_seal.py

3、移动exe的位置,就会出现图标。

Python实现图片指定位置加图片水印(附Pyinstaller打包exe)

到此这篇关于Python实现图片指定位置加图片水印(附:Pyinstaller打包成exe格式)的文章就介绍到这了,更多相关Python实现图片指定位置加图片水印(附:Pyinstaller打包成exe格式)内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
从零学Python之入门(四)运算
May 27 Python
python使用webbrowser浏览指定url的方法
Apr 04 Python
python开发简易版在线音乐播放器
Mar 03 Python
Python 由字符串函数名得到对应的函数(实例讲解)
Aug 10 Python
Python实现的文本对比报告生成工具示例
May 22 Python
OpenCV2从摄像头获取帧并写入视频文件的方法
Aug 03 Python
python 使用值来排序一个字典的方法
Nov 16 Python
python检测IP地址变化并触发事件
Dec 26 Python
详解mac python+selenium+Chrome 简单案例
Nov 08 Python
动态设置django的model field的默认值操作步骤
Mar 30 Python
windows上彻底删除jupyter notebook的实现
Apr 13 Python
Python OpenCV去除字母后面的杂线操作
Jul 05 Python
python 指定源路径来解决import问题的操作
Mar 04 #Python
python源文件的字符编码知识点详解
Mar 04 #Python
python3判断IP地址的方法
Mar 04 #Python
Python解析m3u8拼接下载mp4视频文件的示例代码
Mar 03 #Python
python和opencv构建运动检测器的实现
Mar 03 #Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
Mar 03 #Python
详解python第三方库的安装、PyInstaller库、random库
Mar 03 #Python
You might like
php数组总结篇(一)
2008/09/30 PHP
php页码形式分页函数支持静态化地址及ajax分页
2014/03/28 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
用javascript实现改变TEXTAREA滚动条和按钮的颜色,以及怎样让滚动条变得扁平
2007/04/20 Javascript
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
一个判断email合法性的函数[非正则]
2008/12/09 Javascript
通过Jquery遍历Json的两种数据结构的实现代码
2011/01/19 Javascript
让人期待的2011年度最佳 jQuery 插件分享
2012/03/16 Javascript
JavaScript中变量提升 Hoisting
2012/07/03 Javascript
JS实现点击链接取消跳转效果的方法
2014/01/24 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/09/26 Javascript
jQuery实现带滑动条的菜单效果代码
2015/08/26 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
2016/01/29 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
2016/05/31 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
详解springmvc 接收json对象的两种方式
2016/12/06 Javascript
详解javascript获取url信息的常见方法
2016/12/19 Javascript
nodejs连接mysql数据库简单封装示例-mysql模块
2017/04/10 NodeJs
关于AngularJS中ng-repeat不更新视图的解决方法
2018/09/30 Javascript
vue实现一个炫酷的日历组件
2018/10/08 Javascript
Layer组件多个iframe弹出层打开与关闭及参数传递的方法
2019/09/25 Javascript
python实现基本进制转换的方法
2015/07/11 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
对python中的乘法dot和对应分量相乘multiply详解
2018/11/14 Python
解决Python下json.loads()中文字符出错的问题
2018/12/19 Python
解决Python中pandas读取*.csv文件出现编码问题
2019/07/12 Python
学习和使用python的13个理由
2019/07/30 Python
python爬虫 批量下载zabbix文档代码实例
2019/08/21 Python
在pytorch中动态调整优化器的学习率方式
2020/06/24 Python
浅析canvas元素的html尺寸和css尺寸对元素视觉的影响
2019/07/22 HTML / CSS
美国知名的女性服饰品牌:LOFT(洛芙特)
2016/08/05 全球购物
英国和世界各地鲜花速递专家:Arena Flowers
2018/02/10 全球购物
美国一站式电动和手动工具商店:International Tool
2020/11/26 全球购物
学生会部长竞聘书
2014/03/31 职场文书
助理政工师申报材料
2014/06/03 职场文书
《岳阳楼记》原文、译文赏析
2019/09/10 职场文书