我正在尝试组合4个图像,图像1在左上,图像2在右上,图像3在左下,图像4在右下。然而,我的图像大小不同,不知道如何将图像调整为相同的大小。我是Python的新手,这是我第一次使用PIL。
我有这个到目前为止(打开图像后(
img1 = img1.resize(img2.size)
img1 = img1.resize(img3.size)
img1 = img1.resize(img4.size)
这将满足您的基本要求。这将满足你的基本要求。
步骤:
-
使用中的io.imread(img(读取图像并将其存储到数组列表中列表理解。
-
我们将图像调整为自定义的高度和宽度。您可以根据需要更改IMAGE_with、IMAGE_HIGHT到输入图像大小。
-
你只需要通过n的位置图像(对于您的情况,n=4(添加到函数中。
-
如果你是传递2个以上的图像(对于您的案例4(,将创建2个图像行。在最上面一行中,列表前半部分的图像堆叠起来,剩下的用hconcat((。
-
这两行使用vconcat((垂直堆叠。
-
最后,我们使用image.convert("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