python裁剪拼接图片尺寸
时间: 2025-01-08 17:06:07 浏览: 5
### 使用Python实现图片裁剪、拼接及尺寸调整
为了完成这些任务,可以利用`Pillow`库,这是一个强大的图像处理工具。下面分别介绍如何通过该库来进行图片的裁剪、拼接以及尺寸调整。
#### 图片裁剪
要对图片进行裁剪操作,可以通过指定坐标范围来截取所需部分:
```python
from PIL import Image
img = Image.open('example.jpg') # 打开原始图片文件
cropped_img = img.crop((left, upper, right, lower)) # 定义裁剪区域并执行裁剪
cropped_img.save('output_cropped.png') # 将裁剪后的图片保存到新路径
```
这里`(left, upper)`表示左上角位置而`(right, lower)`则代表右下角的位置[^2]。
#### 调整图片尺寸
对于改变图片大小的需求,可以直接调用`resize()`方法,并传入目标宽度和高度组成的元组作为参数:
```python
resized_image = img.resize((new_width, new_height), resample=Image.LANCZOS)
resized_image.save('output_resized.png')
```
其中`LANCZOS`是一种高质量重采样滤波器选项,在缩小图片时能提供较好的视觉效果[^1]。
#### 多张图片水平或垂直拼接
当涉及到多张图片之间的组合时,可以根据需求选择横向或者纵向排列方式。以下是创建一个新的空白画布并将几张图按顺序放置上去的例子:
```python
def concatenate_images(image_paths, direction='horizontal'):
images = [Image.open(x) for x in image_paths]
widths, heights = zip(*(i.size for i in images))
if direction == 'horizontal':
total_width = sum(widths)
max_height = max(heights)
new_im = Image.new('RGB', (total_width, max_height))
offset_x = 0
for im in images:
new_im.paste(im, (offset_x, 0))
offset_x += im.width
elif direction == 'vertical':
total_height = sum(heights)
max_width = max(widths)
new_im = Image.new('RGB', (max_width, total_height))
offset_y = 0
for im in images:
new_im.paste(im, (0, offset_y))
offset_y += im.height
return new_im
image_list = ['path_to_first_image.jpg', 'path_to_second_image.jpg']
concatenated_image = concatenate_images(image_list, 'horizontal')
concatenated_image.show()
```
这段代码定义了一个函数用于接收一系列图片路径列表,并根据给定的方向(默认为水平方向)将它们连接起来形成新的合成图像。
阅读全文