在Python中裁剪图像:Image.crop()与Image.transform()的比较?

0 投票
1 回答
981 浏览
提问于 2025-04-17 17:06

我想通过选择一部分区域来裁剪一张图片,然后把这部分保存成一个新的图片文件。

根据我在PIL文档中看到的信息,我正在考虑两种方法。

对于这两种方法:

    # assume I already have a PIL-opened image called original_image
    # assume I have a crop_box tuple for the area to crop, e.g. (0, 0, 100, 100)

方法

  1. 直接裁剪原始图片,然后把裁剪出来的区域保存成一个新文件。看起来这样做会丢失原始图片的所有模式数据和其他信息,这些信息可能需要重新加载?

    cropped_image = original_image.crop(crop_box)
    # process cropped version as needed
    
  2. 使用image.transform()方法,选择一个子区域。

    # assume I have an output size of (100, 100)
    cropped_image = original_image.transform(size, Image.EXTENT, crop_box)
    # process cropped version as needed
    

在速度、数据保留或其他我可能忽略的重要因素方面,哪种方法更好呢?

1 个回答

1

以下内容来自于PIL.Image文档中的transform函数:

它的速度比裁剪(crop)稍慢一些。

而且crop更简单,能更清楚地表达你的意图。所以我会选择使用它。

撰写回答