没有的包直接用pip install packagename 下载就好了,这里我使用的图片是:
https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1561195304862&di=e6d3ba615d480c962ca5db1a1ba99a8f&imgtype=0&src=http%3A%2F%2Fimg2.ph.126.net%2FJ6ytxHCsVg6rTNtw80qVjQ%3D%3D%2F1835779798207141733.jpg
保存在与py文件同级目录下,下面直接上代码:
import numpy as np
from PIL import Image
def to_pixelBlock(pixel, Start_coordinate, End_coordinate):
'''
:param pixel: 单位像素块的元素大小
:param Start_coordinate: 处理的起始坐标(像素)点,元组形式,左上角是圆点(0,0),往右是正,往下是正
:param End_coordinate: 处理的终止坐标(像素)点,元组形式,图片右下角坐标
:return:
通过中间值的RGB,对所选范围块的RGB进行重新赋值,设置的单位像素块(Pixel数值)越小, 生成的像素图越精确
'''
# 读取图片,并由 PIL image 转换为 NumPy array
img = np.array(Image.open("timg.jpg")) # 原图750*1132
# 遍历所要处理范围内的所有坐标(像素)点
for y in range(Start_coordinate[1], End_coordinate[1], pixel): # y轴
for x in range(Start_coordinate[0], End_coordinate[0], pixel): # x轴
# 通过中间值的RGB,对所选范围块的RGB进行重新赋值,设置的单位像素块(Pixel数值)越小, 生成的像素图越精确
img[y:y + pixel, x:x + pixel] = img[y +
(pixel // 2)][x + (pixel // 2)]
# 将NumPy array 转换为 PIL image
new_img = Image.fromarray(img.astype(np.uint8))
# 与爬虫保存二进制图片不同,这里直接用save方法保存
new_img.save("show.jpg")
# 展示处理后的图像
new_img.show()
if __name__ == '__main__':
# 设置好要处理的像素范围,并以多大的像素块来生成最终效果图
to_pixelBlock(10, (300, 160), (390, 220))
打码后的图片: