【问题标题】:Copying one image onto another with PIL使用 PIL 将一个图像复制到另一个图像
【发布时间】:2015-08-10 20:08:12
【问题描述】:

我有一个小尺寸 (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")

我得到的错误是

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

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

【问题讨论】:

    标签: python graphics png python-imaging-library


    【解决方案1】:

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

    • 您的第一张图片是 300x300。

    • 粘贴方法接受第二个参数,或者是一个 2 元组,给出 左上角 一个 4 元组,定义左、上、右和
      下像素坐标

    (20,20,300,300) 表示您的图像是 280x280。

    对于 4 元组,以下代码应该做到这一点:

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

    对于二元组:

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

    【讨论】:

    • 为什么还要选择第一个呢?
    猜你喜欢
    • 2013-11-02
    • 2016-09-17
    • 1970-01-01
    • 2018-08-31
    • 2018-12-05
    • 2021-05-19
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    相关资源
    最近更新 更多