1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

如何使用Python批量裁剪图片

Python批量裁剪图片详解

大家好,我是本际云服务器推荐网的小编小本本,今天为大家带来一个详细解答,关于使用Python批量裁剪图片的一些事宜,包括具体的操作方法和提高效率的方法。下面,小编就给大家详细的解答:

如何使用Python批量裁剪图片

需求与思路

我的需求是批量裁剪某一文件夹下的所有图片,并指定裁剪宽高。

裁剪图片的思路如下:

  1. 先使用PIL.Image.size获取输入图片的宽高。
  2. 计算出中心点坐标,即将宽高除以2。
  3. 根据指定的宽高,以中心点向四周拓展,得到裁剪框。
  4. 调用PIL.Image.crop函数完成裁剪。

程序实现

以下是Python程序实现批量裁剪图片的代码。其中,我们使用Pillow库的Image模块,来处理图片。

import os
from PIL import Image

def crop(input_img_path, output_img_path, crop_w, crop_h):
    image = Image.open(input_img_path)
    x_max = image.size[0]
    y_max = image.size[1]
    mid_point_x = int(x_max / 2)
    mid_point_y = int(y_max / 2)
    right = mid_point_x + int(crop_w / 2)
    left = mid_point_x - int(crop_w / 2)
    down = mid_point_y + int(crop_h / 2)
    up = mid_point_y - int(crop_h / 2)
    BOX_LEFT, BOX_UP, BOX_RIGHT, BOX_DOWN = left, up, right, down
    box = (BOX_LEFT, BOX_UP, BOX_RIGHT, BOX_DOWN)
    crop_img = image.crop(box)
    crop_img.save(output_img_path)

if __name__ == '__main__':
    dataset_dir = "cut"  # 图片路径
    output_dir = 'out'   # 输出路径
    crop_w = 300          # 裁剪图片宽
    crop_h = 300          # 裁剪图片高
    
    # 获得需要转化的图片路径并生成目标路径
    image_filenames = [(os.path.join(dataset_dir, x), os.path.join(output_dir, x))
                       for x in os.listdir(dataset_dir)]
    # 转化所有图片
    for path in image_filenames:
        crop(path[0], path[1], crop_w, crop_h)

测试结果

下面是使用上述程序对图片进行裁剪的测试结果。

裁剪前:

裁剪前图片

裁剪后:

裁剪后图片

总结

通过本篇文章的介绍,相信大家已经掌握了Python批量裁剪图片的方法,能够帮助大家提高工作效率。如果还有什么不理解的地方,欢迎提问。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/7254.html