目的:目前某个站点备份时发现,打包后已经50多个G,备份下载是个问题;
而现在各种文章中宣传图片也不少,准备先清理一波,计划如下:
1、清理包含二维码的无关图片
2、根据图片所处文章位置以及图片大小,判断是否清理
3、根据图片的遍历结果,对比图片大小、像素以及出现频率/比例,进行判断
4、其他
5、记录删除的文件名,考虑使用默认图片替代数据库中的记录值,避免影响友好交互
目前先从容易的开始,检测存在二维码的图片,然后清理:
#coding:utf-8
'''
__author__="vulsee.com"
'''
import pyzbar.pyzbar as pyzbar
from PIL import Image,ImageEnhance
import os
import sys
def open_img(img_dir):
img_list = []
for root,dirs,files in os.walk(img_dir):
for file in files:
img_list = [os.path.join(root,file) for file in files if file.endswith(".jpg") or file.endswith(".png") or file.endswith("") ]
for dir in dirs:
print dir
open_img(img_dir+dir)
if len(img_list)>0:
try:
check(img_list)
except Exception as e:
print '[-]------------err:',e
return img_list
def check(img_list):
for _img in img_list:
img = Image.open(_img)
# img = ImageEnhance.Brightness(img).enhance(2.0)#增加亮度
# img = ImageEnhance.Sharpness(img).enhance(17.0)#锐利化
# img = ImageEnhance.Contrast(img).enhance(4.0)#增加对比度
# img = img.convert('L')#灰度化
texts = pyzbar.decode(img)
if not texts:
pass
print("{} :: 文件不存在二维码".format(_img))
for text in texts:
t = text.data.decode("utf-8")
if t:
print("{} ---> 文件存在二维码::内容为:{}".format(_img,t))
os.remove(_img)
if (os.path.exists(_img)==False):
print ("{} ---> 已删除").format(_img)
else:
print ("{} ---> [!]删除失败").format(_img)
if __name__ == '__main__':
img_dir = './uploads/'
open_img(img_dir)
需要安装模块pillow以及pyzbar,在linux下除了安装pyzbar,还需要apt-get install zbar-tools
测试二维码: