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中的字典与成员运算符初步探究
Oct 13 Python
Python字符串切片操作知识详解
Mar 28 Python
使用Python对SQLite数据库操作
Apr 06 Python
pandas groupby 分组取每组的前几行记录方法
Apr 20 Python
Python文本统计功能之西游记用字统计操作示例
May 07 Python
Jupyter中直接显示Matplotlib的图形方法
May 24 Python
简单了解django处理跨域请求最佳解决方案
Mar 25 Python
Java Unsafe类实现原理及测试代码
Sep 15 Python
自定义Django_rest_framework_jwt登陆错误返回的解决
Oct 18 Python
Python操控mysql批量插入数据的实现方法
Oct 27 Python
Django多数据库联用实现方法解析
Nov 12 Python
聊聊Python String型列表求最值的问题
Jan 18 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+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
laravel框架数据库配置及操作数据库示例
2019/10/10 PHP
关于PHP中interface的用处详解
2020/07/26 PHP
JAVASCRIPT IE 与 FF中兼容问题小结
2009/02/18 Javascript
使用Jquery来实现可以输入值的下拉选单 雏型
2011/12/06 Javascript
一个基于jQuery的树型插件(OrangeTree)使用介绍
2012/05/03 Javascript
javascript五图轮播切换实用版
2012/08/17 Javascript
JavaScript NaN和Infinity特殊值 [译]
2012/09/20 Javascript
js获取键盘按键响应事件(兼容各浏览器)
2013/05/16 Javascript
子窗体与父窗体传值示例js代码
2013/08/01 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
JS实现选择TextArea内文本的方法
2015/08/03 Javascript
全面了解javascript中的错误处理机制
2016/07/18 Javascript
实例解析jQuery工具函数
2016/12/01 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
React-Router如何进行页面权限管理的方法
2017/12/06 Javascript
vue-cli3+typescript初体验小结
2019/02/28 Javascript
vue-cli —— 如何局部修改Element样式
2020/10/22 Javascript
[01:28:24]NAVI vs VG Supermajor 败者组 BO3 第三场 6.5
2018/06/06 DOTA
[00:15]天涯墨客终极技能展示
2018/08/25 DOTA
Python list操作用法总结
2015/11/10 Python
Python多重继承之菱形继承的实例详解
2020/02/12 Python
python实现ftp文件传输系统(案例分析)
2020/03/20 Python
将python字符串转化成长表达式的函数eval实例
2020/05/11 Python
详解Python openpyxl库的基本应用
2021/02/26 Python
UGG澳洲官网:UGG Australia
2018/04/26 全球购物
Myprotein西班牙官网:欧洲第一大运动营养品牌
2020/02/24 全球购物
办公自动化专业大学生职业规划书
2014/03/06 职场文书
班组建设经验交流材料
2014/05/12 职场文书
医德医风演讲稿
2014/05/20 职场文书
2015元旦晚会主持词(开场白+结束语)
2014/12/14 职场文书
2015年小学生暑假总结
2015/07/13 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书
pd.drop_duplicates删除重复行的方法实现
2022/06/16 Python
css让页脚保持在底部位置的四种方案
2022/07/23 HTML / CSS