日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python 批量图片局部高斯模糊(图片水印处理)

發(fā)布時(shí)間:2024/1/8 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 批量图片局部高斯模糊(图片水印处理) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言:

????本人菜鳥,不對(duì)的地方請(qǐng)指正,勿噴,感激不盡~~

背景:

????公司讓我扒了一些文章,要保持文章結(jié)構(gòu),圖片正確穿插在文章內(nèi),圖片還要保存在本地,以post的形式發(fā)送數(shù)據(jù),但是后來發(fā)現(xiàn)圖片大部分有水印,還要我做圖片水印處理,就有了這篇文章的出現(xiàn)

思路:

????通過對(duì)圖片的觀察,發(fā)現(xiàn)水印的位置都在右下角的位置,這就方便了我菜鳥干活。

????兩個(gè)處理思路:

????1.高斯模糊【不管圖片有沒有水印都會(huì)高斯模糊】

????2.圖片疊加【同上】

高斯模糊:

在實(shí)現(xiàn)這個(gè)思路的時(shí)候,發(fā)現(xiàn)官方的源碼,bouns參數(shù)是傳了也沒有用的,在源碼里面沒有調(diào)用這個(gè)參數(shù)。所以修改了下源碼,在網(wǎng)上也證實(shí)了(因?yàn)楸救瞬锁B,不確定)

修改源碼如下:

# encoding=utf-8

# Time ???: 2018/1/19

# Email ??: z2615@163.com

# Software: PyCharm

# Language: Python 3

from PIL import ImageFilter

?

?

class MyGaussianBlur(ImageFilter.Filter):

????name = "GaussianBlur"

????'''用于圖片高斯模糊處理,源碼修改過來'''

?

????def __init__(self, radius=2, bounds=None):

????????self.radius = radius

????????self.bounds = bounds

?

????def filter(self, image):

????????if self.bounds:

????????????clips = image.crop(self.bounds).gaussian_blur(self.radius)

????????????image.paste(clips, self.bounds)

????????????return image

????????else:

????????????return image.gaussian_blur(self.radius)

修改完之后,就方便多了,直接導(dǎo)入使用,測(cè)試可以實(shí)現(xiàn)局部區(qū)域的高斯模糊,但是圖片太多,一篇文章對(duì)應(yīng)一個(gè)文件夾,所以還要將所有圖片的路徑當(dāng)作參數(shù)添加到列表,遍歷列表,實(shí)現(xiàn)對(duì)圖片的修改。

首先,將圖片路徑參數(shù)傳入一個(gè)方法,方便修改:

# encoding=utf-8

# Time ???: 2018/1/19

# Email ??: z2615@163.com

# Software: PyCharm

# Language: Python 3

from GaussianBlur import MyGaussianBlur

from PIL import Image

?

def gaussian(img):

????'''需要處理的圖片'''

????path_img = img

????'''處理完保存的圖片'''

????re_img = img.split('/')[-1]

????image = Image.open(path_img)

????'''bounds的四個(gè)參數(shù),用于高斯模糊,添加水印,165和70是水印大小'''

????x = image.size[0]

????y = image.size[1]

????z = image.size[0] - 165

????l = image.size[1] - 70

????# bound = (z, l, x, y)

????'''高斯模糊'''

????image = image.filter(MyGaussianBlur(radius=5.8, bounds=(z, l, x, y)))

????try:

????????image.save(re_img)

????except:

????????image.save(re_img + '.jpg')

????????print('SUCCESS:', re_img)

# return bound

radius參數(shù):大小根據(jù)需要自己調(diào),默認(rèn)是2,在源碼中可以看到。

bounds參數(shù):元組的形式。不添加這個(gè)參數(shù)是對(duì)整個(gè)圖片做模糊處理。

至于except中的.jpg,是有部分圖片沒有后綴,爬取的時(shí)候給自己挖的坑,懶得讀取圖片格式,直接就加的jpg

因?yàn)橹蛔瞿:幚砭蛯⒉糠謪?shù)注釋掉了,將文件保存為:test_gaussi.py(名字隨意)

接下來就要讀取圖片了【處理完的圖片會(huì)覆蓋掉原來的圖片,另有需要先備份】,代碼如下:

# encoding=utf-8

# Time ???: 2018/1/19

# Email ??: z2615@163.com

# Software: PyCharm

# Language: Python 3

import os

from test_gaussi import gaussian

?

path = os.getcwd() + '\\test_img'

file = os.listdir(path)

img_path_list = []

'''水印圖片'''

# logo = Image.open('./logo.png')

'''獲取當(dāng)前文件夾下的所有文件夾'''

for x in file:

????img_path = path + "\\" + x

????img_list = os.listdir(img_path)

????for i in img_list:

????????i_path = img_path + '\\' + i

????????img_path_list.append(i_path)

'''獲取文件夾下的所有圖片'''

for img in img_path_list:

????try:

????????gaussian(img)

????except:

????????print('img file is damaged ', img)

????????pass

效果圖:

? ??

多個(gè)文件多層目錄 處理之后的效果圖

最后:

? ? ?1.因?yàn)閼?#xff0c;所以,就這么簡單的寫了,哪位仁兄可以的話,自行修改。當(dāng)然,寫出來之后分享下^_^~~

? ? ?2.圖片的疊加,需要用到bounds參數(shù),將高斯模糊那部分注釋掉

?

關(guān)注阿布的進(jìn)擊,獲取最新信息

總結(jié)

以上是生活随笔為你收集整理的python 批量图片局部高斯模糊(图片水印处理)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。