使用python 批量降低图片分辨率且不失真
时间: 2023-09-16 11:13:39 浏览: 75
可以使用Pillow库来批量处理图片,以下是示例代码:
```python
from PIL import Image
import os
def reduce_resolution(image_path, factor):
# 打开图像并转换为numpy数组
with Image.open(image_path) as img:
img_arr = np.array(img)
# 计算新图像的大小
new_shape = (img_arr.shape[0]//factor, img_arr.shape[1]//factor, img_arr.shape[2])
# 使用均值池化降低分辨率
new_arr = np.zeros(new_shape)
for i in range(new_shape[0]):
for j in range(new_shape[1]):
new_arr[i, j] = np.mean(img_arr[i*factor:(i+1)*factor, j*factor:(j+1)*factor], axis=(0,1))
# 将numpy数组转换回图像并保存
new_img = Image.fromarray(new_arr.astype(np.uint8))
new_img.save('new_' + image_path)
# 批量处理图片
folder_path = '/path/to/folder/'
factor = 2
for filename in os.listdir(folder_path):
if filename.endswith('.jpg') or filename.endswith('.png'):
reduce_resolution(os.path.join(folder_path, filename), factor)
```
该函数与上一段代码类似,不同之处在于它接受一个文件夹路径作为输入,并处理该文件夹中的所有图像文件。处理后的图像将保存为原文件名前缀为"new_"的新文件。