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)
代码保存后可以直接运行。对应参数中马赛克的颜色 是取区域颜色平均值。
看下图效果
