当前位置:首页 > Python > 正文内容

Python获取数据库信息->解压zip->去水印->打包zip

3年前 (2021-03-04)Python
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import cv2
import numpy
import pymysql
import zipfile
import os,time,sys
import py7zr
import subprocess
from PIL import Image
db = pymysql.connect(
	host="127.0.0.1",
	user="root",
	password="root",
	database="pbapi",
	charset="utf8")
water1png = 'water1.png'
water2png = 'water2.png'
flag = ''
currbookid = 0
#获取压缩密码 get_pwd("661")
def get_pwd(id):
	cursor = db.cursor()
	cursor.execute('SELECT decrypt FROM YZN_BOOK WHERE zip_url LIKE "%'+id+'%"')
	data = cursor.fetchone()
	db.close()
	return data[0]
	
#压缩指定文件夹
def zip_file(src_dir, pwd,zip):
	subprocess.call("7z a -tzip "+zip+" -p"+pwd+" "+src_dir+"/*",shell=True)
#解压zip
def unzip_file(zip_src, pwd, dst_dir):
	subprocess.call("7z e "+zip_src+" -y -p"+pwd+" -o"+dst_dir+"",shell=True)
#去除水印
def get_water(input):
	global flag
	src = cv2.imread(input)
	img = Image.open(input)
	cover(img.width,img.height)
	waterpng = str(img.width)+"x"+str(img.height)+".png"
	
	mask = cv2.imread(waterpng, cv2.IMREAD_GRAYSCALE)
	dst = cv2.inpaint(src, mask, 5, cv2.INPAINT_TELEA)
	cv2.imwrite(input, dst)
#遍历目录内容并去除水印
def file_name(file_dir):
	global flag
	for root, dirs, files in os.walk(file_dir):
		for filename in files:
			if filename.endswith(".jpg"):
				get_water(file_dir+"/"+filename)
	return True
#更新
def exesql(sql):
	db.ping(reconnect=True)
	cursor = db.cursor()
	cursor.execute(sql)
	db.commit()
	cursor.close()
#查询
def selectBook():
	global currbookid,flag
	 
	db.ping(reconnect=True)
	cursor = db.cursor()
	cursor.execute('SELECT id,zip_url,bookid FROM YZN_BOOK WHERE state = 2 ORDER BY bookid asc')
	data = cursor.fetchone()
	currbookid = data[0]
	if(int(data[2]) >= 102):
		flag = '1'
	else:
		flag = '2'
	cursor.close()
	return data[1]
#处理某一个BookID
def execute(bookid):
	#解压
	global currbookid
	pwd = get_pwd(bookid)
	print(pwd)
	flag = ''
	outdir = os.getcwd()+"/tmp/"+bookid
	zip = os.getcwd()+"/books/"+bookid+".zip"
	outzip = os.getcwd()+"/after/"+bookid+".zip"
	unzip_file(zip,pwd,outdir)
	issuccess = file_name(outdir)
	if issuccess:
		zip_file(outdir,pwd,outzip)
		sql = "update YZN_BOOK set state=1 WHERE id = "+str(currbookid)
		exesql(sql)
	else:
		sql = "update YZN_BOOK set state=2 WHERE id = "+str(currbookid)
		exesql(sql)
def cover(ow,oh):
	global flag
	if flag == '1':
		img = Image.open('big1.png')
	else:
		img = Image.open('big2.png')
	img1 = img.convert("RGB")
	x = 2000 - ow
	y = 0
	w = ow + x
	h = oh + y
	cropped = img.crop((x,y,w,h)) 
	cropped.save(str(ow)+'x'+str(oh)+'.png')
	
def start():
	execute(selectBook())
	start()
start()


扫描二维码推送至手机访问。

版权声明:本文由小祥子的博客发布,如需转载请注明出处。

本文地址:http://www.xiaoxiangzi.com/post/76.html

返回列表

没有更早的文章了...

下一篇:使用Python将m3u8文件保存到本地

相关文章

使用Python将m3u8文件保存到本地

昨天在家看在线电影,结果家里网络比较卡,所以没有能愉快的看完,上班的时候想要把昨天没看完的电影下载下来,结果因为版权问题,没地方可下载,于是打开F11,在播放的时候会调用m3u8的文件,文件里有很多t...