使用PIL将一张图像复制到另一张图像上

3

我有一张小尺寸的图片文件(300x300),我想要将整个图像“粘贴”到一个我使用PIL创建的较大图像的特定位置上(2400x1700)。以下是我的代码:

from PIL import Image
im = Image.new("RGB", (2400, 1700), "white")

im2 = Image.open("smallimage.jpg")

im.paste(im2, (20,20,300,300))

im.save("test.png")

The error I get is

Traceback (most recent call last):
  File "chart.py", line 6, in <module>
    im.paste(im2, (20,20,300,300))
  File "/usr/lib64/python2.7/site-packages/PIL/Image.py", line 1351, in paste
    self.im.paste(im, box)
ValueError: images do not match

有没有一种方法可以将较小的图像复制/粘贴到较大的图像上,而不对较小的图像进行任何变换(如裁剪)?

1个回答

7

paste方法中的第二个参数(20,20,300,300)是错误的:

  • 您的第一张图片大小为300x300。

  • paste方法的第二个参数可以是一个2元组,给出左上角的坐标,或者是一个4元组,定义左、上、右和下的像素坐标。

使用(20,20,300,300)表示您的图像大小为280x280。

以下代码应该可以解决问题,对于4元组:

im.paste(im2, (20,20,320,320))

对于2元组:

im.paste(im2, (20,20))

为什么还要有第一个选项呢? - Cees Timmerman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接