网站制作学习网Python→正文:python图片打马赛克
字体:

python图片打马赛克

Python 2023/9/20 18:38:36  点击:不统计

http://%77%77%77%2E%66%6F%72%61%73%70%2E%63%6E

在使用图片中有的图 不能显示,需要打马赛克模糊处理,python3 可以直接给图片打马赛克。
 我使用chat-gpt4 生成的,非常好用,代码如下:

from PIL import Image

def mosaic(img, start_x, start_y, end_x, end_y, pixel_size):
# 打开图像并获取其宽度和高度
img = Image.open(img)
width, height = img.size

# 确保坐标在图像范围内
start_x = max(0, start_x)
start_y = max(0, start_y)
end_x = min(width, end_x)
end_y = min(height, end_y)

# 在指定的坐标范围内给图像打马赛克
for i in range(start_x, end_x, pixel_size):
for j in range(start_y, end_y, pixel_size):
# 获取当前像素块的平均颜色
r, g, b = 0, 0, 0
for x in range(i, min(i+pixel_size, end_x)):
for y in range(j, min(j+pixel_size, end_y)):
pixel = img.getpixel((x, y))
if isinstance(pixel, int):
# 灰度图像
r += pixel
g += pixel
b += pixel
else:
# RGB图像
pixel_r, pixel_g, pixel_b = pixel
r += pixel_r
g += pixel_g
b += pixel_b
count = pixel_size * pixel_size
average_color = (r//count, g//count, b//count)

# 将当前像素块的颜色设置为平均颜色
for x in range(i, min(i+pixel_size, end_x)):
for y in range(j, min(j+pixel_size, end_y)):
if isinstance(img.getpixel((x, y)), int):
# 灰度图像
img.putpixel((x, y), average_color[0])
else:
# RGB图像
img.putpixel((x, y), average_color)

# 保存并显示图像
img.save('mosaic.png')
img.show()

# 使用示例 ,参数为,图片位置,开始x,开始y 结束x,结束y,马赛克颗粒度像素值
mosaic('./2.jpg', 50, 50, 200, 200, 15)

 代码保存后可以直接运行。对应参数中马赛克的颜色 是取区域颜色平均值。
看下图效果 
python 打马赛克
 
 

forasp.cn

·上一篇:python查看安装扩展版本 >>    ·下一篇: cannot import name 'path' from 'importlib_resources >>
推荐文章
最新文章