四幅图像组成的Python拼贴画

qzwqbdag  于 2022-10-30  发布在  Python
关注(0)|答案(1)|浏览(231)

我正在尝试合并4个图像,图像1在左上角,图像2在右上角,图像3在左下角和图像4在右下角。但是,我的图像是不同的大小,不知道如何调整图像的大小相同。我是相当新的Python,这是我第一次使用PIL。真的很感谢任何帮助
目前为止我有这个(打开图像后)

img1 = img1.resize(img2.size)
img1 = img1.resize(img3.size)
img1 = img1.resize(img4.size)
lsmepo6l

lsmepo6l1#

这就满足你的基本要求了。
操作步骤:

  • 在列表解析中,使用io.imread(img)读取图像并将其存储到数组列表中。
  • 我们将图像大小调整为自定义的高度和宽度。您可以根据您的需要更改IMAGE_WIDTH,IMAGE_HEIGHT与输入图像大小相关。
  • 您只需要将n个图像(对于您的情况,n=4)的位置传递给函数。
  • 如果您传递的图像超过2个(对于您的案例4),它将创建2行图像。在顶行中,堆叠列表前半部分中的图像,并使用hconcat()将其余图像放置在底行中。
  • 这两行使用vconcat()垂直堆叠。
  • 最后,我们使用image.convert(“RGB”)将结果转换为RGB图像,并使用image.save()进行保存。

代码:

import cv2
from PIL import Image
from skimage import io

IMAGE_WIDTH = 1920
IMAGE_HEIGHT = 1080

def create_collage(images):
    images = [io.imread(img) for img in images]
    images = [cv2.resize(image, (IMAGE_WIDTH, IMAGE_HEIGHT)) for image in images]
    if len(images) > 2:
        half = len(images) // 2
        h1 = cv2.hconcat(images[:half])
        h2 = cv2.hconcat(images[half:])
        concat_images = cv2.vconcat([h1, h2])
    else:
        concat_images = cv2.hconcat(images)
    image = Image.fromarray(concat_images)

    # Image path
    image_name = "result.jpg"
    image = image.convert("RGB")
    image.save(f"{image_name}")
    return image_name
images=["image1.png","image2.png","image3.png","image4.png"]

# image1 on top left, image2 on top right, image3 on bottom left,image4 on bottom right

create_collage(images)

创建高级学院使你可以这样看待:https://codereview.stackexchange.com/questions/275727/python-3-script-to-make-photo-collages

相关问题