python使用 PIL 库 Image 类实现用两张图片合成一张新图片的功能;对生成新图片 尝试增强其亮度、对比度,调整色彩后保存。
时间: 2024-04-12 19:31:15 浏览: 106
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
5星 · 资源好评率100%
下面是一个使用PIL库的Image类来合成两张图片并增强亮度、对比度以及调整色彩的示例程序:
```python
from PIL import Image, ImageEnhance
def blend_images(image1_path, image2_path, output_path):
# 打开两张图片
image1 = Image.open(image1_path)
image2 = Image.open(image2_path)
# 保证两张图片大小一致
if image1.size != image2.size:
image2 = image2.resize(image1.size)
# 合成图片
blended_image = Image.blend(image1, image2, alpha=0.5)
# 增强亮度
enhancer = ImageEnhance.Brightness(blended_image)
enhanced_image = enhancer.enhance(1.5)
# 增强对比度
enhancer = ImageEnhance.Contrast(enhanced_image)
enhanced_image = enhancer.enhance(1.5)
# 调整色彩
enhancer = ImageEnhance.Color(enhanced_image)
enhanced_image = enhancer.enhance(1.2)
# 保存生成的新图片
enhanced_image.save(output_path)
# 示例使用
image1_path = "image1.jpg"
image2_path = "image2.jpg"
output_path = "output.jpg"
blend_images(image1_path, image2_path, output_path)
```
这个程序定义了一个`blend_images`函数,接受三个参数:`image1_path`表示第一张图片的路径,`image2_path`表示第二张图片的路径,`output_path`表示生成的新图片的保存路径。函数首先使用`Image.open`方法打开两张图片,并进行大小一致性检查,如果两张图片大小不一致,将第二张图片进行缩放使其与第一张图片相同大小。
接下来,使用`Image.blend`方法将两张图片合成为一张新图片,并设置合成的透明度为0.5。然后,分别使用`ImageEnhance.Brightness`、`ImageEnhance.Contrast`和`ImageEnhance.Color`增强亮度、对比度和色彩,通过调用`enhancer.enhance`方法并传入增强的参数值来实现。
最后,使用`enhanced_image.save`方法保存生成的新图片到指定的输出路径。
在示例使用部分,可以根据实际情况将输入图片的路径和输出图片的路径进行替换,然后调用`blend_images`函数进行图片合成和增强。
阅读全文