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 Web开发模板引擎优缺点总结
May 06 Python
Python字符和字符值(ASCII或Unicode码值)转换方法
May 21 Python
利用Python画ROC曲线和AUC值计算
Sep 19 Python
利用Python在一个文件的头部插入数据的实例
May 02 Python
python使用Plotly绘图工具绘制散点图、线形图
Apr 02 Python
PyCharm安装Markdown插件的两种方法
Jun 24 Python
Python序列对象与String类型内置方法详解
Oct 22 Python
Django实现网页分页功能
Oct 31 Python
YUV转为jpg图像的实现
Dec 09 Python
使用pandas的box_plot去除异常值
Dec 10 Python
python 双循环遍历list 变量判断代码
May 04 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
Jun 06 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循环语句 for()与foreach()用法区别介绍
2012/09/05 PHP
php分页函数完整实例代码
2014/09/22 PHP
PHP levenshtein()函数用法讲解
2019/03/08 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
2021/03/09 PHP
jQuery select的操作实现代码
2009/05/06 Javascript
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
2014/12/19 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
2015/06/26 Javascript
Node.js包管理器Yarn的入门介绍与安装
2016/10/17 Javascript
深入理解vue.js双向绑定的实现原理
2016/12/05 Javascript
bootstrap Table服务端处理分页(后台是.net)
2017/10/19 Javascript
vue实现图片加载完成前的loading组件方法
2018/02/05 Javascript
vue仿element实现分页器效果
2018/09/13 Javascript
node.js爬取中关村的在线电瓶车信息
2018/11/13 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
JavaScript变量作用域及内存问题实例分析
2019/06/10 Javascript
[38:54]完美世界DOTA2联赛PWL S2 Rebirth vs LBZS 第一场 11.28
2020/12/01 DOTA
在Django框架中设置语言偏好的教程
2015/07/27 Python
Python读写Json涉及到中文的处理方法
2016/09/12 Python
在java中如何定义一个抽象属性示例详解
2017/08/18 Python
Python使用win32 COM实现Excel的写入与保存功能示例
2018/05/03 Python
Python3 列表,数组,矩阵的相互转换的方法示例
2019/08/05 Python
Python交互环境下打印和输入函数的实例内容
2020/02/16 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
HTML5制作表格样式
2016/11/15 HTML / CSS
Araks官网:纽约内衣品牌
2020/10/15 全球购物
美国家居装饰店:Z Gallerie
2020/12/28 全球购物
为数据库创建索引都需要注意些什么
2012/07/17 面试题
人力资源管理专业毕业生推荐信
2013/11/07 职场文书
金融专业个人求职信范文
2013/11/28 职场文书
体育比赛口号
2014/06/09 职场文书
事业单位人员的自我评价范文
2014/09/21 职场文书
2014财务部年度工作总结
2014/12/08 职场文书
优秀志愿者感言
2015/08/01 职场文书