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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

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

前言:

????本人菜鳥,不對的地方請指正,勿噴,感激不盡~~

背景:

????公司讓我扒了一些文章,要保持文章結構,圖片正確穿插在文章內,圖片還要保存在本地,以post的形式發送數據,但是后來發現圖片大部分有水印,還要我做圖片水印處理,就有了這篇文章的出現

思路:

????通過對圖片的觀察,發現水印的位置都在右下角的位置,這就方便了我菜鳥干活。

????兩個處理思路:

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

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

高斯模糊:

在實現這個思路的時候,發現官方的源碼,bouns參數是傳了也沒有用的,在源碼里面沒有調用這個參數。所以修改了下源碼,在網上也證實了(因為本人菜鳥,不確定)

修改源碼如下:

# 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)

修改完之后,就方便多了,直接導入使用,測試可以實現局部區域的高斯模糊,但是圖片太多,一篇文章對應一個文件夾,所以還要將所有圖片的路徑當作參數添加到列表,遍歷列表,實現對圖片的修改。

首先,將圖片路徑參數傳入一個方法,方便修改:

# 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的四個參數,用于高斯模糊,添加水印,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參數:大小根據需要自己調,默認是2,在源碼中可以看到。

bounds參數:元組的形式。不添加這個參數是對整個圖片做模糊處理。

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

因為只做模糊處理就將部分參數注釋掉了,將文件保存為:test_gaussi.py(名字隨意)

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

# 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')

'''獲取當前文件夾下的所有文件夾'''

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

效果圖:

? ??

多個文件多層目錄 處理之后的效果圖

最后:

? ? ?1.因為懶,所以,就這么簡單的寫了,哪位仁兄可以的話,自行修改。當然,寫出來之后分享下^_^~~

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

?

關注阿布的進擊,獲取最新信息

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。